将行中的数据添加到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))%%>%(品牌.名称,品牌.价格)%>%安排(品牌,工作)