r-组合具有相同前缀的数据帧列

  • 本文关键字:前缀 数据帧 组合 r grepl
  • 更新时间 :
  • 英文 :


我有一个数据帧,其中包含多个Boruta变量选择的结果,来自不同来源的环境变量作为预测因子。这些预测因子通常来自不同的来源(例如,来源a、b、c(,因此有些预测因子用不同的后缀编码,但表示相同的参数(例如,nitrogen_a、nitrogen_b、nitygen_c、phosphate_a和phosphate_b等(

我需要一种方法来使用类似grepl((的东西来识别和分组名称开头相同的变量,并将它们折叠成具有共享变量(例如氮、磷酸盐(的单个变量。

注意,对于每一行,具有共享变量名称前缀的集合中只有一个变量包含非NA值。因此,通过简单地排除NA值,应该可以将多个变量合并为一个变量。所有变量都是字符向量。

我该怎么办?

您的结果目前是宽格式的。我采取的策略是首先使数据变长,删除NA行,然后使用更新的列名再次使表变宽。这里有一个有趣的解决方案:

library(tidyverse)
data = tribble(
~ id, ~ x_1, ~ x_2, ~ y_1, ~ y_2,
"a", 1, NA, 100, NA,
"b", NA, 2, NA, 200
)
data %>% 
pivot_longer(-id) %>% 
filter(!is.na(value)) %>% 
# Update name so that everything until the _ is kept
mutate(name = str_extract(name, "[^_]+")) %>% 
pivot_wider(names_from = "name", values_from = "value")

数据:

> data
# A tibble: 2 x 5
id      x_1   x_2   y_1   y_2
<chr> <dbl> <dbl> <dbl> <dbl>
1 a         1    NA   100    NA
2 b        NA     2    NA   200

输出:

# A tibble: 2 x 3
id        x     y
<chr> <dbl> <dbl>
1 a         1   100
2 b         2   200

最新更新