我有一个数据集,其中人们的完整年龄为 R 中的字符串(例如,“10 年 8 个月 23 天)”,我需要将其转换为有意义的数字变量。我正在考虑将其转换为有多少天人的年龄(这很困难,因为月份有不同的天数)。因此,最好的解决方案可能是创建一个双变量,将年龄显示为 10.6 或 10.8,这是一些数字变量,其中包含 10 年 8 个月 5 天大于10年7月12天。
这是我当前变量的示例
library(tibble)
age <- tibble(complete_age =
c("10 years 8 months 23 days",
"9 years 11 months 7 days",
"11 years 3 months 1 day",
"8 years 6 months 12 days"))
age
# A tibble: 4 x 1
complete_age
<chr>
1 10 years 8 months 23 days
2 9 years 11 months 7 days
3 11 years 3 months 1 day
4 8 years 6 months 12 days
这是我希望看到的可能结果的示例(带有age_num的近似值)
> age
# A tibble: 4 x 2
complete_age age_num
<chr> <dbl>
1 10 years 8 months 23 days 10.66
2 9 years 11 months 7 days 9.92
3 11 years 3 months 1 day 11.27
4 8 years 6 months 12 days 8.52
总之,我有一个包含“complete_age”列的数据集,并且我想创建“age_num”列。
在 R 中如何做到这一点?我很难尝试使用stringr
and lubridate
但也许这就是要走的路?
Using lubridate
便利功能,period
and time_length
:
library(lubridate)
age %>%
mutate(age_years = time_length(period(complete_age), unit = "years"))
# A tibble: 4 x 2
# complete_age age_years
# <chr> <dbl>
# 1 10 years 8 months 23 days 10.729637
# 2 9 years 11 months 7 days 9.935832
# 3 11 years 3 months 1 day 11.252738
# 4 8 years 6 months 12 days 8.532854
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)