StackOverflow非常新,所以如果格式不正确,我会道歉!
d $ a显示学生注册时的情况。 d $ b显示学生是否退出,如果他们的本专栏有NA,他们仍然会注册。如果学生在2017年8月15日至2017年11月30日期间注册20天或更长时间,我想在我的数据框(d)中创建一个新列(fcount)。如果是,则fcount将为TRUE。如果没有,fcount将读为FALSE。我在将算法放入ifelse公式时遇到了麻烦。
以下是您为d $ fcount决定真或假的方法:
- 如果d $ a< = 11/10/2017& d $ b = na,然后d $ fcount = TRUE
- 如果d $ a> 11/10/2017,然后d $ fcount = FALSE
- 如果d $ a< = 11/10/2017,则d $ b = NA或d $ b必须比d $ a大20天,d $ fcount = TRUE
- 如果d $ b< 9/3/2017,然后d $ fcount = FALSE
`lastname< - c(' King',' Heathcoat',' White',' Clark',' Cobbs',' Badgette') a< -c(' 8/14 / 2017',' 8/14 / 2017',' 8/21 / 2017',' 8 / 21/2017',' 11/13 / 2017',' 11/13/2017') b< - c(' 1/30/18',NA,' 9/28/2017',' 8/29/2017',NA,& #39 3 /2018分之1&#39)
d< - data.frame(lastname,a,b)`
我想要的输出看起来像这样: Desired Output
答案 0 :(得分:1)
我缩短了变量名称以减少输入并从NA
中删除了引号,以便将值正确标记为缺失。将日期字符串转换为R {'1}}类后,您可以对日期进行算术运算,以检查已注册的天数。
Date
library(lubridate) lastname <- c('King', 'Heathcoat', 'White', 'Clark', 'Cobbs') a <- c('8/14/2017', '8/14/2017', '8/21/2017','8/21/2017', '11/13/2017') b <- c('1/30/18', NA, '9/28/2017','8/29/2017', NA) d <- data.frame(lastname, a, b) # Convert date columns to Date class d$a = mdy(d$a) d$b = mdy(d$b) d$fcount = ifelse(is.na(d$b), d$a <= mdy("11/30/2017") - 20, d$b - d$a >= 20)