我的数据如下。在“计数”栏中,如果满足两个条件 - (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
答案 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)