如何在r中的一个变量中组合两个值?
我有一个变量“国家” df 这就是我想要的如何在r中的一个变量中组合两个值?,r,R,我有一个变量“国家” df 这就是我想要的 df id age country new 1 21 Denmark 1 2 20 Sweden 2 3 20 Sweden 2 4 21 NA 0 5 22 Other 0 我希望丹麦编码为1,瑞典编码为2,NA+其他编码为0。如何在r中执行此操作?这应该可以: library(dplyr) library(tibble) df <- tibble::tribble( ~d, ~
df
id age country new
1 21 Denmark 1
2 20 Sweden 2
3 20 Sweden 2
4 21 NA 0
5 22 Other 0
我希望丹麦编码为1,瑞典编码为2,NA+其他编码为0。如何在r中执行此操作?这应该可以:
library(dplyr)
library(tibble)
df <- tibble::tribble(
~d, ~age, ~country,
1, 21, "Denmark",
2, 20, "Sweden",
3, 20, "Sweden",
4, 21, NA,
5, 22, "Other")
df <- df %>% mutate(new = case_when(
country == "Sweden" ~2,
country == "Denmark" ~ 1,
TRUE ~ 0))
df
# # A tibble: 5 x 4
# d age country new
# <dbl> <dbl> <chr> <dbl>
# 1 1 21 Denmark 1
# 2 2 20 Sweden 2
# 3 3 20 Sweden 2
# 4 4 21 NA 0
# 5 5 22 Other 0
库(dplyr)
图书馆(tibble)
df这将是一种使用datatable的方法:
library(data.table)
library(dplyr)
df <- setDT(df)
df <- df[,`:=`(
new = case_when(
country == "Sweden" ~1,
country == "Denmark" ~ 2,
TRUE ~ 0)
)]
库(data.table)
图书馆(dplyr)
df这里有一个base
R方法:
corr <- data.frame(country = c("Denmark", "Sweden", NA_character_, "Other"),
new = c(1, 2, 0, 0))
merge(df, corr, by = "country")
corr合并(df,corr,by=“country”)
国家id新时代
1丹麦1211
2其他5 22 0
3瑞典2 20 2
4瑞典3 20 2
5 4 21 0
数据:
df <- structure(list(id = 1:5, age = c(21L, 20L, 20L, 21L, 22L), country = c("Denmark",
"Sweden", "Sweden", NA, "Other")), class = "data.frame", row.names = c(NA,
-5L))
df请尝试分享可复制的示例和预期输出。不确定您的数据帧的结构,但看看这是否有效:df$Country\u代码我尝试过,但这是我第一次,所以我不知道如何正确发布df。您的代码工作正常,但NA没有标记为0,仍然是NA。您可以使用dput(df)。谢谢!但是,NA仍然是NA:(@Quinn不知道为什么,它在我的代码中起作用。你能编辑你的问题以添加你尝试过的内容和结果吗?对不起,我输入了错误。它起作用了!:)非常感谢!:)
> merge(df, corr, by = "country")
country id age new
1 Denmark 1 21 1
2 Other 5 22 0
3 Sweden 2 20 2
4 Sweden 3 20 2
5 <NA> 4 21 0
df <- structure(list(id = 1:5, age = c(21L, 20L, 20L, 21L, 22L), country = c("Denmark",
"Sweden", "Sweden", NA, "Other")), class = "data.frame", row.names = c(NA,
-5L))