将完整的年龄从字符转换为R中的数字转换为、字符、年龄、完整

2023-09-04 22:48:46 作者:少年一起走

我在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中执行此操作?我在尝试使用stringrlubridate时遇到困难,但也许这是可行的方法?

推荐答案

使用lubridate便利函数,periodtime_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
 
精彩推荐
图片推荐