gpt4 book ai didi

r - 根据特定条件拥有数据集的子集

转载 作者:行者123 更新时间:2023-12-01 13:51:40 27 4
gpt4 key购买 nike

我有一个数据集,其中“年龄”的值具有不同的单位(天、月、年)。我想将其值基于日期和月份的行转换为年份。我如何在 R 中做到这一点?如果数字后没有字母,则单位为年。如果数字后面有‘D’,则单位是天(例如10D表示10天)如果数字后有‘M’,则单位为月(如5M表示5个月)。

Age <- c("33","32","44","54M","67M","34D","33D","44","77","88M","49 D","55D","11M")
ID <- c(1,2,3,4,5,6,7,8,9,10,11,12,13)
Data <- data.frame(ID,Age)

> Data
ID Age
1 1 33
2 2 32
3 3 44
4 4 54M
5 5 67M
6 6 34D
7 7 33D
8 8 44
9 9 77
10 10 88M
11 11 49 D
12 12 55D
13 13 11M

最佳答案

这是在 base R 中的一个快速方法:

Data$units = ifelse(grepl("M", Data$Age), "month", ifelse(grepl("D", Data$Age), "day", "year"))
Data$value = as.numeric(gsub(pattern = "[^0-9]", replacement = "", Data$Age))
Data$result = with(Data,
ifelse(units == "year", value,
ifelse(units == "month", value / 12, value / 365.25)))
Data
# ID Age units value result
# 1 1 33 year 33 33.00000000
# 2 2 32 year 32 32.00000000
# 3 3 44 year 44 44.00000000
# 4 4 54M month 54 4.50000000
# 5 5 67M month 67 5.58333333
# 6 6 34D day 34 0.09308693
# 7 7 33D day 33 0.09034908
# 8 8 44 year 44 44.00000000
# 9 9 77 year 77 77.00000000
# 10 10 88M month 88 7.33333333
# 11 11 49 D day 49 0.13415469
# 12 12 55D day 55 0.15058179
# 13 13 11M month 11 0.91666667

关于r - 根据特定条件拥有数据集的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49736165/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com