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