【问题标题】:Retaining a value in an R dataset if it's present in another dataset如果值存在于另一个数据集中,则保留 R 数据集中的值
【发布时间】:2015-02-18 10:29:12
【问题描述】:

我目前正在编写一个代码,该代码适用于来自实验的各种数据集,该实验着眼于各种变量,这些变量可能不会在每次重复中都存在。我的第一步是创建一个包含所有可能变量的空数据集,然后编写一个函数来保留正在输入的数据集中的列并删除其余的列。这是我想如何实现这一目标的示例:-

x<-c("a","b","c","d","e","f","g")
y<-c("c","f","g")

有没有办法移除 x 中不存在于 y 中的元素和/或保留 x 中存在于 y 中的值?

【问题讨论】:

  • 也许intersect(x,y) 或检查setdiff

标签: r vector subset


【解决方案1】:

对于您的第一个问题:“我的第一步是创建一个包含所有可能变量的空数据集”,我会在所有向量的串联上使用factor,例如:

all_vect = c(x, y)
possible = levels(factor(all_vect))

然后,对于第二部分“编写一个函数,该函数保留正在输入的数据集中的列并删除其余列”,我会写:

df[,names(df)%in%possible]

【讨论】:

  • 这个答案在任何方面都没有帮助。如果您只想要唯一值,只需使用unique
【解决方案2】:

正如 akrun 所写,使用 intersect(x,y) 或

> x[x %in% y]

【讨论】:

  • 这基本上是intersect的源码。在控制台输入intersect
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多