【发布时间】:2020-05-30 13:54:28
【问题描述】:
首先,我要转换这些数据:
datinput = read.table(header = TRUE, text = "
var1 var2 var3
A 3 10
B 2 6
")
datinput
var1 var2 var3
1 A 3 10
2 B 2 6
转换成这种格式:
datoutput = read.table(header = TRUE, text = "
var2.A var3.A Var2.B var3.B
3 10 2 6
")
var2.A var3.A Var2.B var3.B
1 3 10 2 6
我尝试了reshape2::dcast,但没有提供所需的输出。
相反,dcast 给出了这个:
datinput%>%reshape2::dcast(var1~var2, value.var="var3")
var1 2 3
1 A NA 10
2 B 6 NA
datinput%>%reshape2::dcast(var1, value.var=c("var2", "var3"))
Error in is.formula(formula) : object 'var1' not found
datinput%>%reshape2::dcast(var1~var1, value.var=c("var2", "var3"))
Error in .subset2(x, i, exact = exact) : subscript out of bounds
In addition: Warning message:
In if (!(value.var %in% names(data))) { :
the condition has length > 1 and only the first element will be used
然后,我想让 names_from 在新名称中排在第一位。
我想将这些新列命名为 A.var2 B.var2 A.var3 B.var3。这是因为我想使用变量名按字母顺序排列结果变量到 A.var2 A.var3 B.var2 B.var3
感谢您的帮助。
【问题讨论】:
-
接受的答案是:
library(reshape2) meltExpensesByMonth <- melt(expensesByMonth, id.vars=1:2) dcast(meltExpensesByMonth, expense_type ~ month + variable, fun.aggregate = sum)。我如何将它应用到我的案例中?
标签: r pivot reshape data-manipulation dcast