首页 > 解决方案 > 使用 for 循环创建包含其他列中值计数的列

问题描述

首先,我是 Stackoverflow 的新手,也是 R 的新手。因此,请多多包涵我的潜在误解等。

我有一个包含几列的数据框。我正在尝试创建一个新列,该列将包含其他列之一中的值的计数。该任务指定我需要使用 for 循环来实现这一点,即使它可能不是最有效或最有效的方法。

我已经尝试过这种方法,但由于某种原因它不起作用。

for (i in nrow(df)) {
   df$new_col[i] <- sum(df$old_col == df$old_col[i], na.rm = TRUE)
}

如果你有这样的数据:

old_col   name
   1       a
   1       b
   2       c
   3       d

代码应该产生:

old_col   name   new_col
   1       a        2
   1       b        2
   2       c        1
   3       d        1

我很感激任何帮助!

标签: rfor-loopcount

解决方案


你可以试试这个(非常初学者的解决方案):

for(i in 1:nrow(df)){
  if(i==1){
   df$new_col[i]=1 # For first point
  }
  else if(df$old_col[i]==df$old_col[i-1]){
   df$new_col[i]=df$new_col[i-1]+1 # If old_col values are same
  }
  else{
   df$new_col[i]=1  # When we have a new old_col value
  }
} 

输出:

    old_col name new_col
1       1    a       1
2       1    b       2
3       2    c       1
4       3    d       1

推荐阅读