我有一个困难的时间理解dcast,不能得到正确的命令,以获得我想要的。我会给予一个最小的repro。
#generate the data
ID <- c('a','a','a','b','b','b')
Parameter <- c('p1','p2','p3','p1','p2','p3')
Value <- c('yes','no','3','yes','yes','2')
Comment <- c(NA,'Deduced','To verify',NA,'Deduced','Verified')
Source <- c('Exp.1','Exp.1','Exp.1+2','DB2','DB2','DB2')
Person <- c('X','X','X','Y','Y','Z')
long.data <- data.frame(ID,Parameter,Value,Comment,Source,Person)
ID Parameter Value Comment Source Person
1 a p1 yes <NA> Exp.1 X
2 a p2 no Deduced Exp.1 X
3 a p3 3 To verify Exp.1+2 X
6 b p1 yes <NA> DB2 Y
7 b p2 yes Deduced DB2 Y
8 b p3 2 Verified DB2 Y
我想将其转换为以下wide.data格式:
ID Person p1 p1-Comment p1-Source p2 p2-Comment p2-Source p3 p3-Comment p3-Source
1 a X yes <NA> Exp.1 no Deduced Exp.1 3 To verify Exp.1+2
2 b Y yes <NA> DB2 yes Deduced DB2 2 Verified DB2
我可以假设每个ID都有相同的Person,我相信我可以进行dcast,但是我还没有找到一个合理的方法来做到这一点,而不会输出垃圾列,可能有一个相对简单的方法来做到这一点,我只是缺少。
2条答案
按热度按时间pkmbmrz71#
我们可以使用
pivot_wider
zfycwa2u2#
学习
reshape
。