R:将多行重新组合为一行(按第一列中的值)[重复]

rbl8hiat  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(97)

此问题在此处已有答案

(9个答案)
四年前关闭了。
我有一个来自R中导入的CSV的 Dataframe ,例如:

Salmon  6
Salmon  4
Salmon  7
Trout   2
Trout   3
Trout   2

我想重新整理一下

Salmon  6  4  7

Trout  2  3  2

转置后的值各自位于新列中。

vtwuwzda

vtwuwzda1#

您可以使用aggregate

aggregate(V2 ~ V1, data = mydata, c)

#       V1 V2.1 V2.2 V2.3
# 1 Salmon    6    4    7
# 2  Trout    2    3    2

数据:

read.table(text='Salmon  6
Salmon  4
Salmon  7
Trout   2
Trout   3
Trout   2', header=F, quote='"') -> 
mydata
6yoyoihd

6yoyoihd2#

下面是使用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 <- 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))

相关问题