我有这个数据框:
x <-c("jan_12", "feb_12", "apr_12", "jan_12")
jan_12 <-c(0, NA, NA, 0)
feb_12 <-c(NA, 0, NA,0)
mar_12 <-c(1,0, NA, 1)
apr_12 <-c(0,0, 0, 1)
may_12 <-c(NA,0, 0, 0)
jun_12 <-c(NA,1, 1, NA)
df <- data.frame(x, jan_12, feb_12, mar_12, apr_12, may_12, jun_12, stringsAsFactors = F)
每一行代表一个在商务中工作的人。变量X是雇用该人的日期。例如,第一个人在2012年1月被雇用,依此类推。其他变量代表支付人的月份(值0)且未支付(值1)。我需要做以下事情:
要创建一个值为1的新二进制变量,如果该人员在雇用后的两个月中没有一个人获得报酬。
我该如何开始?我尝试使用dplyr和数据表,但最终没有解决方案。
[Edited: Notation of missing values: from "NA" to NA]
答案 0 :(得分:0)
[根据您的修改编辑我的答案]
您可以使用apply:
df[,"x"] = as.character(df[,"x"]) # See comment
apply(df, 1, function(X){ind = match(X['x'], names(X)); sum(as.numeric(X[ind:(ind+1)]), na.rm = T) != 0})
[1] FALSE FALSE FALSE FALSE
[注释]: 我建议使用stringAsFactor = F作为填充数据框,然后你可以省略第一行代码。
df <- data.frame(x, jan_12, feb_12, mar_12, apr_12, may_12, jun_12, stringsAsFactors = F)