R函数作用于数据帧中的连续行,如果满足某个条件则添加标签

时间:2014-05-27 06:25:26

标签: r

我有一个采用这种格式的数据框:

df<-data.frame(A=(c(4,1,5,4)), B=(c(4,2,4,5)), C=(c(7, 2, 3,5)), D=(c("Group 1", "Group 2", "Group 1", "Group 2")))

我想编写一个搜索数据帧每一行的函数,如果它找到一个值为&lt; = 3且组1分配的函数,则添加第五列,字符串为“Success”;如果在任何具有Group 1赋值的行中找不到值&lt; = 3,则会添加第五列,其字符串为“Fail”。

然后我需要在具有36列和1000行的类似格式的数据帧上部署此函数。

2 个答案:

答案 0 :(得分:0)

如果您只想忽略“第2组”行,那么

df$Result<-ifelse(df$D=="Group 1", 
    ifelse(rowSums(df[,1:3]<=3)>0, "Success", "Fail"),
NA)
df

将返回

  A B C       D  Result
1 4 4 7 Group 1    Fail
2 1 2 2 Group 2    <NA>
3 5 4 3 Group 1 Success
4 4 5 5 Group 2    <NA>

答案 1 :(得分:0)

这里有一个循环解决方案:

for(r in 1:nrow(df)){

  if (any(df[r, 1:3]<=3) & df[r,4] == 'Group 1') df [r, "E"] <- "Success"
  if (all(df[r, 1:3]>3) & df[r,4] == 'Group 1') df [r, "E"] <- "Fail"

}

你可以放置更多条件,例如第2组