我试图用变量解开一个大表。 这个帖子只给了我提示,但没有解决我的问题(How to "unmelt" data with reshape r)。
我想从这里开始:
name1 name2 values group
xyz1 abc1 1 group1
xyz2 ghf 2 group2
xyz3 lmn 3 group1
xyz4 opq 4 group2
xyz1 abc1 5 group2
xyz2 ghf 6 group1
xyz3 lmn 7 group2
xyz4 opq 8 group1
xyz5 stu 2 group3
到
name1 name2 group_1 gruoup_2 group_3
xyz1 abc1 1 6 NA
xyz2 ghf33 6 2 NA
xyz3 lmn93 3 5 NA
xyz4 opq42 8 4 NA
xyz5 stu21 NA NA 2
我当前的“unmelt”命令是
d <- read.table("test.txt", header=T, sep="\t")
e <- dcast(d, name1 + name2 ~ group ~ values)
但是这不会将值分配给组以及name1和name2 如果你可以帮助我,那会很棒。 非常感谢! d
答案 0 :(得分:2)
您可以使用基础R的reshape(df, idvar = c("name2", "name1"), timevar = "group", direction = "wide")
# name1 name2 values.group1 values.group2 values.group3
#1 xyz1 abc1 1 5 NA
#2 xyz2 ghf 6 2 NA
#3 xyz3 lmn 3 7 NA
#4 xyz4 opq 8 4 NA
#9 xyz5 stu NA NA 2
:
reshape2::dcast
或使用reshape2::dcast(df, name1 + name2 ~ group, value.var = "values");
# name1 name2 group1 group2 group3
#1 xyz1 abc1 1 5 NA
#2 xyz2 ghf 6 2 NA
#3 xyz3 lmn 3 7 NA
#4 xyz4 opq 8 4 NA
#5 xyz5 stu NA NA 2
:
df <- read.table(text =
"name1 name2 values group
xyz1 abc1 1 group1
xyz2 ghf 2 group2
xyz3 lmn 3 group1
xyz4 opq 4 group2
xyz1 abc1 5 group2
xyz2 ghf 6 group1
xyz3 lmn 7 group2
xyz4 opq 8 group1
xyz5 stu 2 group3", header = T)
enum ValueTypes: String {
case value1 = "moobs"
case value2 = "notMoobs"
}
func myMethod(myType: ValueTypes) {
//Your code goes here
}
myMethod(myType: .value1)
myMethod(myType: .value2)
答案 1 :(得分:1)