R:将多行重新分组为一行(按第一列中的值)
我有一个来自R中导入的CSV的数据帧,例如:R:将多行重新分组为一行(按第一列中的值),r,R,我有一个来自R中导入的CSV的数据帧,例如: Salmon 6 Salmon 4 Salmon 7 Trout 2 Trout 3 Trout 2 我想重新安排: Salmon 6 4 7 Trout 2 3 2 转置后的值分别位于一个新列中。您可以使用聚合: aggregate(V2 ~ V1, data = mydata, c) # V1 V2.1 V2.2 V2.3 # 1 Salmon 6 4 7 # 2 Trout
Salmon 6
Salmon 4
Salmon 7
Trout 2
Trout 3
Trout 2
我想重新安排:
Salmon 6 4 7
Trout 2 3 2
转置后的值分别位于一个新列中。您可以使用
聚合:
aggregate(V2 ~ V1, data = mydata, c)
# V1 V2.1 V2.2 V2.3
# 1 Salmon 6 4 7
# 2 Trout 2 3 2
数据:
这里有一个使用dcast
library(data.table)
dcast(setDT(mydata), V1~paste0("VN", rowid(V1)), value.var = 'V2')
# V1 VN1 VN2 VN3
#1: Salmon 6 4 7
#2: Trout 2 3 2
数据
mydata我正试图使用spread()
这看起来更简单<代码>排列()
将返回并出错。谢谢。这似乎将所有数值聚合到V2中的单个向量中。e、 g.第2列变为c(4,7,2)
library(data.table)
dcast(setDT(mydata), V1~paste0("VN", rowid(V1)), value.var = 'V2')
# V1 VN1 VN2 VN3
#1: Salmon 6 4 7
#2: Trout 2 3 2
mydata <- structure(list(V1 = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("Salmon",
"Trout"), class = "factor"), V2 = c(6L, 4L, 7L, 2L, 3L, 2L)), .Names = c("V1",
"V2"), class = "data.frame", row.names = c(NA, -6L))