我希望有人能帮助我。我有一组来自几个子地块的植被数据,我需要为我的MC项目做一个Kmean聚类分析,所以我希望有人能帮助我,因为我离R-shark很远!
我的df看起来像这样:
| Number_ID | ID | species_name | PP_abundance |
| -------- | -------- | Alchemilla | 0 |
| 1 | A_1 | Antennaria | 0 |
| 2 | A_1 | Arabis | 0 |
| 3 | A_1 | Bartsia | 0 |
| 4 | A_1 | Betula | 0 |
| 5 | A_1 | Bistorta | 0 |
| 6 | A_1 | Carex | 0 |
ect. ect. ect. ect.
然后使用以下代码:
df_wide <- df %>%
pivot_wider(names_from = species_name, values_from = PP_abundance)
我把它改为:
| Number_ID | ID | Alchemilla | Antennaria | Arabis | Bartsia | ECT.
| -------- | -------- | -------- | ------------- | ----- | ----- | ECT.
| 1 | A_1 | 0 | NA | NA | NA | ECT.
| 2 | A_1 | NA | 1 | NA | NA | ECT.
| 3 | A_1 | NA | NA | 0 | NA | ECT.
| 4 | A_1 | NA | NA | NA | 2 | ECT.
| 5 | A_1 | NA | NA | NA | NA | ECT.
| 6 | A_1 | NA | NA | NA | NA | ECT.
更多信息,ID是次要情节。他们在一个网格上,从A-M和1-15(有超过70列的物种名称)。所以现在我有几千行数据,但大多数都是重复的,在物种列中只有一个丰度数据。我的问题是,我如何合并/分组行,使我只有一行A1,B3,C14,D 7等,但仍然保留物种列和丰度数据的总和?
所以它看起来像这样:
| Number_ID | ID | Alchemilla | Antennaria | Arabis | Bartsia | ECT.
| -------- | -------- | -------- | ------------- | ----- | ----- | ECT.
| 1 | A_1 | 0 | 1 | 0 | 2 | ECT.
| 2 | A_2 | 3 | 0 | 1 | 0 | ECT.
| 3 | A_3 | 0 | 3 | 0 | 1 | ECT.
| 4 | A_4 | 2 | 4 | 0 | 2 | ECT.
| 5 | A_5 | 0 | 2 | 1 | 0 | ECT.
| 6 | A_6 | 0 | 0 | 0 | 1 | ECT.
有谁知道如何写,使行是唯一的?
(And如果任何人知道如何继续与Kmean代码,也将不胜感激!我以前
#Compute k-means with k = 8
set.seed(123)
km.res <- kmeans(df_wide, 8, nstart = 25)
但我不能这样做,而有NA在我的DF。)
/干杯比尔克
我尝试了几行不同的代码,比如:
df_merged <- df_wide %>%
group_by(ID) %>%
summarize_all(funs(sum(., na.rm = TRUE)))
但这只给了我一个包含合并子图数据的一列DF,但它丢弃了物种名称和丰度数据
1条答案
按热度按时间carvr3hs1#
回答我自己的问题(如果有人错过了评论)。正如@Onyambu所指出的,“Number_Id”列具有唯一的id,使得行是唯一的,无论“ID”是否在其他行之间共享。也就是说,“Number_ID”阻止了数据透视表的扩展。
删除“Number_ID”列起了作用,我的数据现在是一个widend格式,子图作为唯一的行,看起来像我发布的想要的例子(但没有“Number_id”列)