r - 为特定 ID 重新编码列中的观察值
问题描述
我有一个数据集,称为“调查”。在此,我有一行行的个人 ID,以及包含许多问题的列。我需要将 1 列中的值重新编码为 NA 并将观察结果移动到另一列。
例如:
ID Fruit Vegetable
aaa NA grape
bbb NA tomato
ccc apple NA
ddd peach NA
我想更改属于 ID aaa 和 bbb 的葡萄和番茄观察值,将它们放入水果列(调查受访者将它们放入错误的列)并将 NA 留在后面。
看起来像:
ID Fruit Vegetable
aaa grape NA
bbb tomato NA
ccc apple NA
ddd peach NA
非常感谢你
解决方案
基本上,我们将使用 2 个条件来完成此操作。第一个将检查它是否为 NA 并在您要重新编码的名称列表中 (fct2recode)。如果它在 fct2recode 中,第二个将从第二列中删除它。
library(tidyverse)
df <- read_table("ID Fruit Vegetable
aaa NA grape
bbb NA tomato
ccc apple NA
ddd peach NA")
fct2recode <- c("grape", "tomato")
df %>%
mutate(Fruit = ifelse(is.na(Fruit) & Vegetable %in% fct2recode,
Vegetable, Fruit),
Vegetable = ifelse(Vegetable %in% fct2recode, NA, Vegetable))
结果是:
# A tibble: 4 x 3
ID Fruit Vegetable
<chr> <chr> <chr>
1 aaa grape NA
2 bbb tomato NA
3 ccc apple NA
4 ddd peach NA
我希望这种方法对您的问题足够通用。
编辑:
对于 ID 为“aaa”和“bbb”的特定目标 obs,您可以将它们作为条件添加到ifelse
:
df %>%
mutate(Fruit = ifelse(ID %in% c("aaa", "bbb"), Vegetable, Fruit),
Vegetable = ifelse(ID %in% c("aaa", "bbb", NA, Vegetable)))
推荐阅读
- javascript - 为什么这个变量是 4?
- c# - 在两台不同的机器上使用 Microsoft Sync Framework 时无法同步网络上的文件
- ios - AFNetworking 3 或 4.01 迁移
- java - 将电话号码从 Outlook 粘贴到 JavaFX TextField 或 TextArea 会产生无关字符
- testing - HELM 3:Helm 测试不起作用?获得“测试套件:无”
- python - 使用 CDK 中的 CfnFunction 引用 SAM 中的本地代码和 Python
- python - 尝试检索 .jpg EXIF 数据时不断返回“找不到文件”
- r - R中的多重回归
- mongodb - 在 Mongodb 中使用 $trunc 或 $round 不保证 2 位小数
- javascript - 在 textarea 光标旁边设置 Bootstrap Popover 位置