在特定 ID 的列中重新编码观察
Recode observation in column for a specific ID
我有一个数据集,名为 'survey'。在这里,我有几行个人 ID,以及有很多问题的列。我需要将 1 列中的值重新编码为 NA 并将观察值移至另一列。
例如:
ID Fruit Vegetable
aaa NA grape
bbb NA tomato
ccc apple NA
ddd peach NA
我想把ID为aaa和bbb的葡萄和西红柿观察值改成fruit一栏(调查对象放错一栏),把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”的特定目标对象,您可以将它们作为条件添加到ifelse
:
df %>%
mutate(Fruit = ifelse(ID %in% c("aaa", "bbb"), Vegetable, Fruit),
Vegetable = ifelse(ID %in% c("aaa", "bbb", NA, Vegetable)))
我有一个数据集,名为 'survey'。在这里,我有几行个人 ID,以及有很多问题的列。我需要将 1 列中的值重新编码为 NA 并将观察值移至另一列。
例如:
ID Fruit Vegetable
aaa NA grape
bbb NA tomato
ccc apple NA
ddd peach NA
我想把ID为aaa和bbb的葡萄和西红柿观察值改成fruit一栏(调查对象放错一栏),把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”的特定目标对象,您可以将它们作为条件添加到ifelse
:
df %>%
mutate(Fruit = ifelse(ID %in% c("aaa", "bbb"), Vegetable, Fruit),
Vegetable = ifelse(ID %in% c("aaa", "bbb", NA, Vegetable)))