[英]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.