r - for 循环数据框并使用唯一值循环

标签 r for-loop dataframe

我正在尝试编写代码来构建用于三阶段聚类采样的函数,但是,我现在只是使用虚拟数据,以便我可以了解我的函数中的内容。

我正在处理 for 循环,并且有一个包含分组值的数据框。我有一个包含数据的数据框:

    Cluster group   value   value.K.bar  value.M.bar      N.bar
1       1       A   1        1.5            2.5             4
2       1       A   2        1.5            2.5             4
3       1       B   3        4.0            2.5             4
4       1       B   4        4.0            2.5             4
5       2       B   5        4.0            6.0             4
6       2       C   6        6.5            6.0             4
7       2       C   7        6.5            6.0             4

我正在尝试运行 for 循环

n <- dim(data)[1]
e <- 0
total <- 0
for(i in 1:n) {e = data.y$value.M.bar[i] - data$N.bar[i]
               total = total + e^2} 

我的问题是:有没有办法运行相同的循环,但对于组中的唯一值?说:

Group 'A', 'B', 'C'

任何帮助将不胜感激!

编辑:正确的语言

最佳答案

例如,您可以使用 by 来应用每个组的数据。首先,我将您的代码包装在一个以数据作为输入的函数中。

get.total <- function(data){
  n <- dim(data)[1]
  e <- 0
  total <- 0
  for(i in 1:n) {
    e <- data$value.M.bar[i] - data$N.bar[i] ## I correct this line
    total <- total + e^2
  } 
  total
}

然后,要计算 B 组和 C 组的总计,您可以执行以下操作:

    by(data,data$group,FUN=get.total)
data$group: A
[1] 4.5
---------------------------------------------------------------------------------------------------- 
data$group: B
[1] 8.5
---------------------------------------------------------------------------------------------------- 
data$group: C
[1] 8

但更好的是,这里是函数的矢量化版本

 by(data,data$group,
        function(dat)with(dat, sum((value.M.bar - N.bar)^2)))

关于r - for 循环数据框并使用唯一值循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16245862/

相关文章:

c++ - 无法在 const 成员函数内生成 'non-const for range'

python - 如何在 pandas 数据框中通过两列和第三列求和来从组中获取最大值?

python - 将数据框中的值替换为另一个数据框中的值 - 正则表达式

python - DataFrame 到用户定义的格式

r - 将 ids -> items 转换为 {pairs of ids} -> items

r - 汇总日期并计算平均值

python - 使用多个嵌套 for 循环时,如何绕过 python 中的静态嵌套 block ?

javascript:索引期间在对象上调用了哪些函数?

R::ggplot2::geom_points:如何用饼图交换点?

python - 从从表单生成 csv 文件的网站抓取网页 (http ://njdep. rutgers.edu/continuous/data.php)