【问题标题】:Reshaping data to wide format将数据重塑为宽格式
【发布时间】:2017-07-20 23:57:15
【问题描述】:

我想将我的数据转换为特定格式,但不知道如何使用 reshape()。

我的数据如下:

df<-data.frame(Cues=c("A","B","C","A","B","C"), 
               Targets=rep(1:3,2), 
               Rater=rep(1:2, each=3), 
               Rating=c(1,3,5,2,4,6))

我想得到它:

df2<-data.frame(Targets=rep(1:3,2), 
                Cues=c("A","B","C","A","B","C"), 
                Rater_1= c(1,2), 
                Rater_2=c(3,5), 
                Rater_3C=c(5,6))

我在论坛reshape() 上尽了最大努力,但并没有真正走得更远。你们能帮帮我吗?

提前致谢,最好的, 乔什

【问题讨论】:

  • 你对reshape做了什么尝试?
  • 我无法从你的输出中理解
  • 我也是。请多解释一下你的输出

标签: r reshape


【解决方案1】:

注意: df data.frame 设置中没有 3C 评分器,所以这个答案忽略了这个问题。

考虑到这一点,将长格式数据转换为宽格式数据的一种方法是使用 reshape2 模块中的 dcast 函数:

library(reshape2)
df2 <- dcast(df, Targets + Cues ~ Rater, value.var = "Rating")
names(df2)[names(df2) == "1"] <- "Rater_1"
names(df2)[names(df2) == "2"] <- "Rater_2"

df2
  Targets Cues Rater_1 Rater_2
1       1    A       1       2
2       2    B       3       4
3       3    C       5       6

此外,tidyr 模块对于这种转换非常值得一看。

【讨论】:

  • 非常感谢!这就是我要搜索的内容。我想我可以重塑/转播数据,以便它自动将新列命名为“Rater_1”和“Rater_2”。对于糟糕的可重复示例,我很抱歉,我试图简化我的数据但没有做好。下一次,我会做好更充分的准备;)感谢您的帮助,makeyourownmaker!
  • 不用担心。 R 不是最直接的语言!
猜你喜欢
  • 1970-01-01
  • 2021-09-15
  • 2021-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 2017-07-19
  • 2022-01-11
相关资源
最近更新 更多