【问题标题】:Subset a Dataframe by column vector of a different Dataframe按不同数据框的列向量对数据框进行子集
【发布时间】:2015-12-24 06:34:55
【问题描述】:

假设我有一个这样的数据框:

dfA<-data.frame(A=c(letters[1:3]),B=c(letters[4:6]),C=c(letters[7:9]))

>dfA
  A B C
1 a d g
2 b e h
3 c f i

还有一个这样的:

dfB<-data.frame(replicate(12,sample(0:5,5,rep=T)))
colnames(dfB)<-sample(letters[1:9],12,rep=T)

> dfB
  a a d d g e i c i a g h
1 0 3 3 2 2 1 2 4 1 2 4 0
2 2 2 3 0 0 0 4 4 1 5 2 1
3 4 5 0 3 2 4 3 5 1 4 2 3
4 0 1 0 4 4 3 2 2 1 2 3 1
5 4 0 2 1 2 4 0 5 5 0 5 1

我如何引用 dfB 中的所有列,这些列的名称包含在 dfA 的 A 列中?

我对 R 很陌生,在这个论坛上搜索了很多,但无法得到确切的答案。 我尝试过这样的事情:sub&lt;-subset(dfB, !colnames(dfB) %in% dfA$A),到目前为止结果并不令人满意。

我想得到的输出是:

> sub
  a a c a
1 0 3 4 2
2 2 2 4 5
3 4 5 5 4
4 0 1 2 2
5 4 0 5 0

谁能帮忙?

【问题讨论】:

  • dfB[colnames(dfB) %in% dfA$A]subset(dfB, select=colnames(dfB) %in% dfA$A)
  • 成功了!我希望它会那么容易。谢谢
  • 也可以使用dfB[match(dfA$A, names(dfB), 0L)]

标签: r vector dataframe subset


【解决方案1】:

正如 akrun 在 cmets 中指出的那样

subset(dfB, select=colnames(dfB) %in% dfA$A)

完美运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    相关资源
    最近更新 更多