2016-06-08 87 views
1

我有一個數據幀(df1),包含200列以上的數據(每個數千行)。列名稱是字母數字,並且全部彼此不同。在R中,如何通過另一個數據框的列名刪除數據框中的行?

我有第二個數據集(df2)與一些列,其中第一列(命名爲'col1')包含具有df1的colnames的「值」的行。

但不適用於df2中的每一行我在df1中有相應的列。

現在我想刪除(drop)df2中沒有「對應」列的所有行。

我搜索了很長一段時間,使用關鍵字像「其他data.frame的值子集data.frame」,但沒有找到任何解決方案。我檢查過,例如hereherehere等一些地方。

感謝您的幫助。

+0

你可以創建一個小的可重複的例子? [見這裏的提示](http://stackoverflow.com/q/5963269/903061) - 使用內置的數據,或模擬數據,或使用'dput()'重複共享。 – Gregor

+1

但是也許你想要的是'df2 [df2 $ col1%%names(df1),]'。 「df1」是一個數據框似乎並不重要,唯一重要的是你有一個你想要保留的值的字符向量,而這恰好是'names(df1)'。 – Gregor

+0

感謝@Gregor和Effel。你做到了! – Slyrs

回答

3

數據:

df1 <- data.frame(a = 1:3, b = 1:3) 
# a b 
# 1 1 1 
# 2 2 2 
# 3 3 3 

df2 <- data.frame(col1 = c("a", "c")) 
# col1 
# 1 a 
# 2 c 

保持行在df2其值名稱在df1

subset(df2, col1 %in% names(df1)) 
# col1 
# 1 a 
相關問題