将行中的数据添加到R中的列
我有下表:将行中的数据添加到R中的列,r,R,我有下表: wk Brand Retail_price 1 1 a 1.2 2 2 a 1.3 3 1 c 1.4 4 2 c 1.5 5 1 d 1.6 6 2 d 1.7 我试图得到其他品牌在同一周的零售价格作为专栏。 我想去: wk Brand Retail_pric
wk Brand Retail_price
1 1 a 1.2
2 2 a 1.3
3 1 c 1.4
4 2 c 1.5
5 1 d 1.6
6 2 d 1.7
我试图得到其他品牌在同一周的零售价格作为专栏。
我想去:
wk Brand Retail_price Retail_price_a Retail_price_c Retail_price_d
1 1 a 1.2 NA 1.4 1.6
2 2 a 1.3 NA 1.5 1.7
3 1 c 1.4 1.2 NA 1.6
4 2 c 1.5 1.3 NA 1.7
5 1 d 1.6 1.2 1.4 NA
6 2 d 1.7 1.3 1.5 NA
我已经尝试过在数据中循环,为每个品牌手动添加列。结果证明效率很低
我是新来R的。我正在考虑一些与python中的pd.pivot相当的东西,创建一个新的df,然后将两者结合起来
我在R怎么做?有更好的方法吗?我认为您需要将整形(从长到宽)和合并相结合。下面是一个使用
dplyr
和tidyr
的示例:
#数据
x我想你想检查merge()
函数,我想它会让你成功的。你可以按wk和brand设置合并键,你应该能够找到现有的问题来帮助你使用正确的语法。请不要发布代码/数据/错误的图像:它无法复制或搜索(SEO),它会破坏屏幕阅读器,而且它可能不适合某些移动设备。参考:(和)。请直接包含代码或数据(例如,dput(head(x))
或data.frame(…)
)。下面是一个dput
结果和问题中的数据:结构(列表(wk=c(1L,2L,1L,2L,1L,2L),品牌=c(“a”,“a”,“c”,“d”,“d”),零售价=c(1.2,1.3,1.4,1.5,1.6,1.7)),class=“data.frame”,row.names=c(NA,-6L))
merge()
与dcast()
一起工作@对于将来的问题,你应该按照@r2evans的建议去做,你应该使用dput
:dput(df)
。这将在我的评论中输出结果。这将使其他人能够轻松地复制您的代码。此外,您仍然可以像以前一样显示输出。left\u join(x,,,by=“wk”)
这更像OP的输出。这并不重要。为了按照OP的建议获得列中的NA
值,可以对x2
执行以下操作:x2%%>%聚集(Brand.Name,Brand.Price,-c(wk,Brand,Price))%%>%变异(Brand.Price=ifelse(paste0(“Brand_z”,Brand)=Brand.Name,NA,Brand.Price))%%>%(品牌.名称,品牌.价格)%>%安排(品牌,工作)