r - 从变量中整理信息
问题描述
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-。任何建议将被认真考虑。提前致谢。
解决方案
您还可以使用以下解决方案:
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
推荐阅读
- android - 如何将记录的用户名/电子邮件与用户数据一起放入 Firestore KOTLIN
- eclipse - Eclipse 占用更多 CPU
- php - json_decode 将长数字转换为科学记数法
- algorithm - 如何使用 Firestore 查询“禁止用户列表”
- python - 模型未在 Django 模型中声明显式 app_label
- java - ROS2 Java 示例:com.intellij.openapi.externalSystem.model.ExternalSystemException:无法在空对象上调用方法 split()
- python - 使用pytest和unittest.TestCase时如何给sys.argv
- r - 在 R 中隐藏包开发中的凭据
- java - 如何将 mm:ss 时间字符串转换为秒整数(postgres/liquibase)
- java - 如何使用 Selenium Java 查找表中元素的行索引