R如何使用'和'函数/条件运算符

时间:2014-06-30 18:04:01

标签: r operators conditional

我的数据如下。在“计数”栏中,如果满足两个条件 - (df $ age [rowcount]> 5& df $ age [rowcount]< 8),我想返回1。我希望在第2行的“计数”列中获得值1.我应该对代码进行哪些更改?在其余行上,我希望“计数”值为0

df <- data.frame(sex=c('M','F','M'),occupation=c('Student','Analyst','Analyst'),age=c(5,6,9), marks=c(34,65,21))
df
for (rowcount in nrow(df))
{
  df$counting[rowcount]=df$age[rowcount]>5 & df$age[rowcount]<8
}
df

---------------------------更新

根据下面给出的建议,我更新了我的代码如下。我希望在“计数”栏中获得0,1,1。我应该对我的代码做些什么改变?

df <- data.frame(sex=c('M','F','M'),occupation=c('Student','Analyst','Analyst'),age=c(5,6,9), marks=c(34,65,21))
df

df$counting <- sum(ifelse(df$age > 5 & df$age < 8, 1, 0),ifelse(df$marks > 20 & df$marks < 30, 1, 0))
df

3 个答案:

答案 0 :(得分:1)

以下是您的循环的修改版本。如果需要,可以在if语句中添加其他条件。

for (rowcount in seq_len(nrow(df))) {
  if (df$age[rowcount] > 5 & df$age[rowcount] < 8) {
    df$counting[rowcount] <- 1
  } else {
    df$counting[rowcount] <- 0
  }
}

答案 1 :(得分:1)

您可以使用ifelse,如下所示

df <- data.frame(sex=c('M','F','M'),occupation=c('Student','Analyst','Analyst'),age=c(5,6,9), marks=c(34,65,21))
df$counting <- ifelse(df$age > 5 & df$age < 8, 1, 0)

答案 2 :(得分:1)

回答更新:而sum使用+这样,

df$counting <- ifelse(df$age < 8 & df$age >5, 1, 0) + ifelse(df$marks >20 & df$marks < 30, 1, 0)