R 通过计算字符列的平均值将其转换为数字类型
我有字符类型的R 通过计算字符列的平均值将其转换为数字类型,r,tidyverse,R,Tidyverse,我有字符类型的age列。如何将列age中的所有age\u char替换为对应的\u age\u num 谢谢 library(tidyverse) countries <- c("America", "Brazil", "Canada", "Denmark", "England", "France") age <- c("70 to 75",
age
列。如何将列age
中的所有age\u char
替换为对应的\u age\u num
谢谢
library(tidyverse)
countries <- c("America", "Brazil", "Canada", "Denmark", "England", "France")
age <- c("70 to 75", "unknown", "75 to 80", "70 to 75", "80 and above", "75 to 80")
tbl <- tibble(countries, age)
age_char <- unique(tbl$age)
correponding_age_num <- (72.5, 50, 77.5, 85)
库(tidyverse)
国家如果我们在“to”处进行拆分以创建两个数字列,那么我们可以进行平均
library(tidyr)
library(stringr)
tbl %>%
separate(age, into = c('age1', 'age2'), sep = '\\s+to\\s+|[^0-9]+',
convert = TRUE, remove = FALSE) %>%
transmute(countries, age, age_mean = case_when(str_detect(age,
'and above') ~ age1 + 5, TRUE ~ (age1 + age2)/2))
-输出
# A tibble: 6 x 3
# countries age age_mean
# <chr> <chr> <dbl>
#1 America 70 to 75 72.5
#2 Brazil unknown NA
#3 Canada 75 to 80 77.5
#4 Denmark 70 to 75 72.5
#5 England 80 and above 85
#6 France 75 to 80 77.5
如果我们在“to”处进行拆分以创建两个数字列,则可以进行平均
library(tidyr)
library(stringr)
tbl %>%
separate(age, into = c('age1', 'age2'), sep = '\\s+to\\s+|[^0-9]+',
convert = TRUE, remove = FALSE) %>%
transmute(countries, age, age_mean = case_when(str_detect(age,
'and above') ~ age1 + 5, TRUE ~ (age1 + age2)/2))
-输出
# A tibble: 6 x 3
# countries age age_mean
# <chr> <chr> <dbl>
#1 America 70 to 75 72.5
#2 Brazil unknown NA
#3 Canada 75 to 80 77.5
#4 Denmark 70 to 75 72.5
#5 England 80 and above 85
#6 France 75 to 80 77.5
库(tidyverse)
国家图书馆(tidyverse)
国家非常感谢你。有时,年龄写为“80岁及以上”或“未披露”。我可以使用unique(tbl$age)检查所有unique值。是否有一种方法可以创建所需值的单独数组,并以某种方式映射到唯一值。例如-唯一值为c(“70-75”、“75-80”、“未知”)。我们创建一个数组c(72.5,77.5,50),并使用它替换所有字符values@SiD你能试试更新吗。我不确定你在原始数据中有什么样的模式我编辑这个questions@SiD这将是伟大的,请编辑与所有的模式谢谢你非常akrun。有时,年龄写为“80及以上”或“未披露”。我可以使用unique(tbl$age)检查所有unique值。是否有一种方法可以创建所需值的单独数组,并以某种方式映射到唯一值。例如-唯一值为c(“70-75”、“75-80”、“未知”)。我们创建一个数组c(72.5,77.5,50),并使用它替换所有字符values@SiD你能试试更新吗。我不确定你在原始数据中有什么样的模式我编辑这个questions@SiD这将是伟大的,请编辑与所有的模式