我確定有我的問題的答案,但我似乎無法找到一個工作,我絕對是新的R,所以冗餘的道歉!轉換和合並R中的數據集
所以我有一個巨大的數據集--17K obs與35個變量。這是一個我導入並用as.matrix強制的txt文件。第一列有字符值,其餘34列有數字值。
結構 -
>str(data_m)
chr [1:17933, 1:35] "RAB12" "TRIM52" "C1orf86" "PLAC9" "MORN3" "LOC643783" "LOC389541" "OAZ2" ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:35] "Name" "X118" "X12" "X21" ...
現在有2列另一個小長表數據集 - ID和性別。
> str(data_maleids)
'data.frame': 24 obs. of 2 variables:
$ id : Factor w/ 34 levels "X118","X12","X21",..: 8 23 9 19 10 7 5 4 2 30 ...
$ gender: Factor w/ 2 levels "female","male": 2 2 2 2 2 2 2 2 2 2 ...`
例如, -
row.names id gender
1 1 X37 male
2 2 X64 male
我想要做的只是爲第二數據集中存在的那些id(X37,X64等)的第一個數據集設置子集。
我試着轉置較大的數據集,但是這給了我在列名方面的問題,我似乎無法解決這個問題。
當您讀入第一個數據幀時,請不要將其強制轉換爲矩陣。當你閱讀你的第二個數據框(只有id和性別)時,設置'stringsAsFactors = FALSE'。然後,只需執行'df1 [df1 $ Name%in%df2 $ id,]''。 – Thomas
它應該是colnames(df1)而不是$ Name的權利?因爲df2中的id實際上是df1中的列名。但邏輯起作用。謝謝 !然而,這導致了另一個步驟,即將原始數據集中的第一列$ Name合併回來,但這並不是我想要的最好的方法。應該有一種方法來保留名爲子集的名稱列 – user2695213