r - 为什么我使用 tidyr 的传播函数得到 "repeat"行和 NA?

标签 r tidyr

我正在尝试从具有以下结构的数据框开始:

Date    State    Price.Name    Cost.Name   Price    Cost
Jan       AZ    firm1.price   firm1.cost    100       50
Jan       AZ    firm2.price   firm2.cost    200      100

到一个看起来像的数据框:

Date    State    firm1.price    firm2.price    firm1.cost    firm2.cost
Jan        AZ            100            200            50          100

我试过使用 tidyr 的传播:

data=spread(data,Price.Name, Price)
data=spread(data,Cost.Name, Cost)

但这给了我以下数据框:

Date    State    firm1.price    firm2.price    firm1.cost    firm2.cost
Jan        AZ            100            NA            50            NA
Jan        AZ             NA           200            NA           100

我在这里找到了另一个解决相同问题的线程:tidyr spread function generates sparse matrix when compact vector expected ,但我无法确定是否已达成解决方案。有人建议在使用 spread 之前按虚拟变量分组,但我已经尝试过但无济于事。

最佳答案

您可以分别执行价格和成本,然后合并(加入)它们(或 cbind 它们,具体取决于您的数据的具体情况):

x <- read.table(text = "Date    State    Price.Name    Cost.Name   Price    Cost
+ Jan       AZ    firm1.price   firm1.cost    100       50
+                 Jan       AZ    firm2.price   firm2.cost    200      100",header = TRUE,sep = "")
> x %>% select(-Cost,-Cost.Name) %>% spread(Price.Name,Price)
  Date State firm1.price firm2.price
1  Jan    AZ         100         200
> x %>% select(-Price,-Price.Name) %>% spread(Cost.Name,Cost)
  Date State firm1.cost firm2.cost
1  Jan    AZ         50        100

关于r - 为什么我使用 tidyr 的传播函数得到 "repeat"行和 NA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35001437/

相关文章:

r - 绘制引导插入符号模型的 ROC 曲线

r - 在group_by中调用cor函数的`The standard deviation is zero`错误

r - 如何在取消嵌套之前删除嵌套小标题中的重复列名

r - 聚集在前两行

r - 用R中的tidyverse按组完成整数序列

r - 在四开本演示中使用 tikz

r - 使用 native 管道将预测与变异结合使用

r - 使用 R 的 ggplot2 定义日期时间的第一个轴断点

R - 正则表达式根据第一个点分隔字符串?

r - 将子集列粘贴在一起