繁体   English   中英

使用 for 循环在 R 中进行子集化

[英]subseting in R with for-loop

我在尝试使用某些标准对数据进行子集化时遇到了一些麻烦。 拜托,如果我能得到一些帮助就太好了。 这是我的问题......

我有一个数据框,其中包含从 X1 到 X9 的变量。 存储在此变量中的数据是双精度的。 我需要一个 for 循环来查看这个变量并返回符合条件的行......让我们说:

查看从 X1 到 X9 的变量并返回数据,例如 (X1,X2,X3)==(5.2,6.3,7.1)。

有人能帮我吗?

谢谢。

对不起,我没有把自己说得很清楚。 因为我有从 X1 到 X9 的变量,并且我过滤的值可以出现在任何变量中,所以我可以找到带有以下代码的行。

但我不想手动执行此任务,替换要提取的任何变量组合。 这就是为什么我想在 for 循环中执行此操作但无法完成。 谢谢。

vars <- c("X1", "X2","X3") cond <- c(5.2,6.3, 7.1) databas %>% filter( .data[[vars[[1]]]] == cond[[1]], .data[[vars[[2]]]] == cond[[2]], .data[[vars[[3]]]] == cond[[3]] )

最简单的方法是先转置您的列,以便您的数据框长而不是宽。 您可以使用 tidyr::gather 函数来完成此操作。 之后,您可以过滤数据框。 您不一定需要循环。

df_filtered <- tidyr::gather(your_df, value = Value, key = ColumnNames, 
               dplyr::starts_with('X')) %>%
               dplyr::filter( ColumnNames == "X1" & Value == 5.2 |
                              ColumnNames == "X2" & Value == 6.3 |
                              ColumnNames == "X3" & Value == 7.1 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM