[英]Multi-Row Data to Columns
我想获取当前在行中的一些数据,并将其转换为列。 这里的想法是对df
中x1
每个值都有一行,并根据唯一的x1
和x2
组合将x3
的数据分为两列。
> df
x1 x2 x3
1 A 0 4
2 A 1 2
3 B 1 1
4 C 0 5
5 C 1 2
6 D 0 1
7 D 1 1
8 E 0 3
这可能涉及一个多步骤的清理过程,但最终我想得到类似下表df_rev
。 请注意,缺少的B0
和E1
组合已替换为0值。
> df_rev
x1 x3_0 x3_1
1 A 4 2
3 B 0 1
4 C 5 2
6 D 1 1
8 E 3 0
目前,我一直在尝试使此答案适合我的情况,但运气不佳。 任何帮助将非常感激。
df='
No x1 x2 x3
1 A 0 4
2 A 1 2
3 B 1 1
4 C 0 5
5 C 1 2
6 D 0 1
7 D 1 1
8 E 0 3'
df=read.table(text=df,header=T)
library(reshape)
nf = cast(df, x1 ~ x2, value = .(x3))
colnames(nf) = c('x1','x3_0','x3_1')
nf[is.na(nf)] <- 0
nf
您也可以使用内置的“重塑”功能。 sub
表达式仅替换的所有实例.
在带有_
的变量名中,如果您有很多“时间”(在这里只有两个,但是可以轻松得多的话),比重新键入所有新的变量名更方便:
df_rev = reshape(df, timevar="x2", idvar="x1", direction="wide")
names(df_rev) = sub("\\.", "_", names(df_rev))
df_rev[is.na(df_rev)] = 0
df_rev
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.