如何根据R中的多个变量对数据框进行子集化

用户5688971

我有一个 286 列和 157355 行的数据框。我希望对包含一个或多个已定义因子变量(例如 F32、F341 等)的行进行子集化。完成此操作后,我希望确定哪些其他因子变量在子集行中最常见。

我试图过滤感兴趣的值,但出现一条错误消息,指出数据必须是数字、逻辑或复杂的,例如;

d<- a %>%
  filter_at(vars(f.41202.0.0:f.41202.0.65), all_vars('F32'))

我也试过这个,但结果数据框没有值存在;

f <- a %>%
  rowwise() %>%
  filter(any(c(1:280) %in% c('F32', 'F320', 'F321', 'F322', 'F323', 
                             'F328', 'F329', 'F330', 'F331', 'F332', 
                             'F333', 'F334', 'F338', 'F339')))

当我尝试将所有相关变量放入 ICD 对象时,也会发生同样的情况;

f <- b %>%
  rowwise() %>%
  filter(any(c(1:286) %in% ICD))

我将不胜感激任何建议,谢谢

我的数据看起来像这样(抱歉,我在此页面上找不到更好的格式);

行名 Var1 Yes2 Yes3 Yes4

1 F3 不适用 不适用 M87

2 不适用 不适用 M87 不适用

3 不适用 F3 不适用 K17

4 不适用 不适用 F3 M87

根据 F3 对行进行子设置后,它应该是这样的;

行名 Var1 Yes2 Yes3 Yes4

1 F3 不适用 不适用 M87

3 不适用 F3 不适用 K17

4 不适用 不适用 F3 M87

所以相同的变量列被保留,但没有 F3 的行被删除

然后我希望根据它们在该子集中的常见程度列出其他变量(F3 除外),在这种情况下是

最常见:M87

第二常见:K17

如果有帮助,我正在尝试识别患有特定疾病的个体,然后我将尝试找出这些个体最常患有的其他疾病

谢谢您的帮助

Ben

如果您想使用tidyverse,您可以使用filter_all查看所有列。然后,检查是否any_vars在诊断代码向量中。在我的示例中,我查看 F3 和 F320。

之后,如果要统计诊断代码的数量,可以将数据由宽变长,然后计算频率。如果您愿意,可以NA通过过滤器删除让我知道这是否是您的想法。

df <- data.frame(
  Var1 = c("F3", NA, NA, NA),
  Var2 = c(NA, NA, "F3", NA),
  Var3 = c(NA, "M87", NA, "F3"),
  Var4 = c("M87", NA, "K17", "M87")
)

library(tidyverse)

df %>%
  filter_all(any_vars(. %in% c("F3", "F320"))) %>%
  pivot_longer(cols = starts_with("Var"), names_to = "Var", values_to = "Code") %>%
  filter(!is.na(Code)) %>%
  count(Code, sort = TRUE)

在过滤器之后,您应该:

  Var1 Var2 Var3 Var4
1   F3 <NA> <NA>  M87
2 <NA>   F3 <NA>  K17
3 <NA> <NA>   F3  M87

之后pivot_longercount

# A tibble: 3 x 2
  Code      n
  <fct> <int>
1 F3        3
2 M87       2
3 K17       1

旁注:如果您希望仅根据您的某些变量进行过滤(而不是选择所有变量),则可以filter_at改用,例如:

filter_at(vars(starts_with("Var")), any_vars(. %in% c("F3", "F320")))

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据多个联合条件在 R 中对数据框进行子集化

如何根据R中两列不匹配的值对数据框进行子集化?

如何根据索引号对数据框进行子集化?

如何根据 groupby 列表的多个值对数据框进行子集化

如何使用变量名中的多个正则表达式对数据框进行子集化?

根据R中的多个通配符条件对数据框进行子集

在 R 中,如何根据函数内部的值列表正确地对数据框进行子集化?

如何根据列表中的值对数据框进行子集化?

如何根据R中列名中的数字条件对数据进行子集化?

如何根据另一个数据框中的值对数据框进行子集化

R:如何对数据框列中的字符串进行子集化?

根据其他数据框中的列表对数据框进行子集化

想要通过在循环中对数据框进行子集化并根据 i 值分配每个数据框名称来在 R 中创建新数据框

如何使用R函数对数据框进行子集化,并在以后使用该数据框?

根据列表中的元素对数据框进行子集

根据列表中的值列表对数据框进行子集

通过R中多个变量中的多个值对数据进行子集

如何根据二进制向量中的元素对数据框中的列进行子集

如何根据下一次出现在R中对数据帧进行子集化?

如何在日期上对数据框进行子集化?

您如何基于列名对数据框进行子集化?

如何使用熊猫对数据框进行子集化?

如何使用基于R中最近位置的坐标对数据框中的行进行子集化

根据r中id中的值对数据进行子集

通过 R 中的因子变量对数据框进行子集化时遇到问题

根据R中的某些条件对数据帧进行子集

R-如何使用整数索引对数据框的行进行子集化?

如何使用矩阵中的信息对数据框进行子集化?

在 R 中,如何根据向量中的值对数据帧的行进行子集