簡體   English   中英

多行數據到列

[英]Multi-Row Data to Columns

我想獲取當前在行中的一些數據,並將其轉換為列。 這里的想法是對dfx1每個值都有一行,並根據唯一的x1x2組合將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 請注意,缺少的B0E1組合已替換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM