R:更有效地子集数据

R用户

我有一个数据集df:

df=data.frame(rbind(c("A",1,1,"abc"),
                    c("B",0,0,"def"),
                    c("C",0,1,"hep"),
                    c("A",1,1,"hit"),
                    c("B",0,1,"occ"),
                    c("C",1,1,"tem"),
                    c("A",1,1,"twi"),
                    c("B",1,1,"twa"),
                    c("C",1,1,"mit"),
                    c("A",1,1,"mot"),
                    c("C",1,1,"mot"),
                    c("B",1,1,"mjak")))
names(df)=c("id","v1","v2","check")

我想在DF中创建ID的子集,其中包含“检查”列的“ ch.vars”向量中包含的值。

ch.vars=c("abc","hit","mot","twi","mjak")

如果id包含“ ch.vars”中给出的值以外的其他任何值,则将从数据集中排除它们。例如,id B和C在检查列中包含其他值,因此将它们排除在子集中。

到目前为止,这是我尝试过的:

df$check.var=ifelse(df$check %in% ch.vars,1,0)
df=arrange(df,id)

st1=filter(df,check.var==0)
st1=as.character(unique(st1$id))

df2=df[!df$id %in% st1,]

> df2
  id v1 v2 check check.var
1  A  1  1   abc         1
2  A  1  1   hit         1
3  A  1  1   twi         1
4  A  1  1   mot         1

这行得通,但我想知道是否有更有效的方法来做到这一点,即以更少的步骤实现结果。谢谢!

戴维·罗宾逊

您可以通过group_byfilter在dplyr软件包中执行此操作:

library(dplyr)
df2 = df %>%
  group_by(id) %>%
  filter(all(check %in% ch.vars))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用数据框子集更有效地将Python用于循环

来自分类Dev

Android解析。更有效地获取数据?

来自分类Dev

Android解析。更有效地获取数据?

来自分类Dev

在 r 中更有效地重塑?

来自分类Dev

如何更有效地将数据框重塑为新形式(R)?

来自分类Dev

如何更有效地将字典数据或数组列表数据保存到playerprefs?

来自分类Dev

比UNION每列分别更有效地重组数据的方法?(访问限制)

来自分类Dev

使用Angular over Swig可以更有效地解释路线中的数据吗?

来自分类Dev

如何更有效地修改熊猫数据框列

来自分类Dev

如何更有效地使用find命令?

来自分类Dev

更有效地展平和压缩数组

来自分类Dev

更有效地执行连接和更新

来自分类Dev

如何更有效地找到闭环

来自分类Dev

哪种技术更有效地替换记录

来自分类Dev

更有效地拆分列

来自分类Dev

如何更有效地编写此CSS?

来自分类Dev

如何更有效地解码RSA加密?

来自分类Dev

for循环并更有效地生成图

来自分类Dev

在Linux上更有效地执行frwite

来自分类Dev

如何更有效地使用find命令?

来自分类Dev

如何更有效地重写

来自分类Dev

更有效地获取产品集合

来自分类Dev

更有效地使用API

来自分类Dev

如何更有效地编写此CSS?

来自分类Dev

如何更有效地呈现Mathjax内容?

来自分类Dev

如何更有效地找到闭环

来自分类Dev

如何更有效地计算滚动比

来自分类Dev

更有效地编写if语句

来自分类Dev

更有效地遍历原始视频