嘿,所以我对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

如何将原始数据转换成这样:
AHS   BND   MFN   PRF
3.00  3.80  4.00  2.00
4.00  3.80  4.00  NA

我尝试了rbind,对于那些没有PRF的用户,R会将AHS分配给PRF。

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

最佳答案

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

grp <- cumsum(DF$V1 == "AHS")
tapply(DF$V2, list(grp, DF$V1), sum)

给予:
  AHS BND MFN PRF
1   3 3.8   4   2
2   4 3.8   4  NA

我们以此为数据:
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)

关于r - 通过R中的某些行名称将行数据转换为列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26187978/

10-12 17:46