首页 > 解决方案 > 从变量中整理信息

问题描述

my_df <- tibble(
  b1 = c(2, 6, 3, 6, 4, 2, 1, 9, NA), 
  b2 = c(NA, 4, 6, 2, 6, 6, 1, 1, 7), 
  b3 = c(5, 9, 8, NA, 2, 3, 9, 5, NA), 
  b4 = c(NA, 6, NA, 10, 12, 8, 3, 6, 2),
  b5 = c(2, 12, 1, 7, 8, 5, 5, 6, NA),
  b6 = c(9, 2, 4, 6, 7, 6, 6, 7, 9),
  b7 = c(1, 3, 7, 7, 4, 2, 2, 9, 5),
  b8 = c(NA, 8, 4, 5, 1, 4, 1, 3, 6),
  b9 = c(4, 5, 7, 9, 5, 1, 1, 2, NA),
  b10 = c(14, 2, 4, 2, 1, 1, 1, 1, 5))

你好,

我有一个像这样的df(一个非常大的df)。我想创建一个新列(A1- 将在其他列之前)并告诉 R 查看每一行,对于其中包含 4 或 8 的任何行(仅在列 b3 和 b8 内),询问 R在 col A1 中写 YES,否则写 NO-。任何建议将被认真考虑。提前致谢。

标签: r

解决方案


您还可以使用以下解决方案:

library(dplyr)
library(purrr)

my_df %>%
  mutate(A1 = pmap_chr(my_df %>% select(b3: b8), ~ {x <- c(...)[!is.na(c(...))];
  c("No", "Yes")[(+any(x %in% c(4, 8)))+1]})) %>%
  relocate(A1)

# A tibble: 9 x 11
  A1       b1    b2    b3    b4    b5    b6    b7    b8    b9   b10
  <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 No        2    NA     5    NA     2     9     1    NA     4    14
2 Yes       6     4     9     6    12     2     3     8     5     2
3 Yes       3     6     8    NA     1     4     7     4     7     4
4 No        6     2    NA    10     7     6     7     5     9     2
5 Yes       4     6     2    12     8     7     4     1     5     1
6 Yes       2     6     3     8     5     6     2     4     1     1
7 No        1     1     9     3     5     6     2     1     1     1
8 No        9     1     5     6     6     7     9     3     2     1
9 No       NA     7    NA     2    NA     9     5     6    NA     5

推荐阅读