与R中的观察匹配的列名

时间:2017-06-13 20:03:38

标签: r

我有这个数据框:

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]

1 个答案:

答案 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)