通过R中的某个行名将行数据转换为列

Sta*_*tCC 5 merge transpose r transformation

嘿,所以我对R很新,只熟悉一些函数.我有大约2,000,000行的行数据.

原始数据是这样的,项目有四种关税(AHS,BND,MFN,PRF).有些数据有PRF,有些则没有.目标是按关税类型将每个项目的关税转换为一列.

AHS      3.00 
BND      3.80
MFN      4.00
PRF      2.00
AHS      4.00
BND      3.80
MFN      4.00
Run Code Online (Sandbox Code Playgroud)

如何将原始数据转换为如下:

AHS   BND   MFN   PRF
3.00  3.80  4.00  2.00
4.00  3.80  4.00  NA
Run Code Online (Sandbox Code Playgroud)

我试过rbind,因为那些没有PRF,R会将AHS分配给PRF.

谁能告诉我如何进行这种转变?非常感谢!

G. *_*eck 2

创建一个grp变量,第一组为 1,第二组为 2,依此类推。然后使用tapply

grp <- cumsum(DF$V1 == "AHS")
tapply(DF$V2, list(grp, DF$V1), sum)
Run Code Online (Sandbox Code Playgroud)

给予:

  AHS BND MFN PRF
1   3 3.8   4   2
2   4 3.8   4  NA
Run Code Online (Sandbox Code Playgroud)

我们用这个作为数据:

DF <- data.frame(V1 = c("AHS", "BND", "MFN", "PRF", "AHS", "BND", "MFN"), 
                 V2 = c(3, 3.8, 4, 2, 4, 3.8, 4), stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)