gpt4 book ai didi

R - 如何根据包含要用于操作的列的名称的额外列对每一行的不同列进行操作

转载 作者:行者123 更新时间:2023-12-05 03:28:01 25 4
gpt4 key购买 nike

我是 R 的新手。我想计算数据框每一行的平均值,但对每一行使用不同的列子集。我有两个额外的列,分别为我提供代表“开始”和“结束”的列的名称,我应该使用它们来计算每个平均值。

举个例子

dframe <- data.frame(a=c("2","3","4", "2"), b=c("1","3","6", "2"), c=c("4","5","6", "3"), d=c("4","2","8", "5"), e=c("a", "c", "a", "b"), f=c("c", "d", "d", "c"))
dframe

它提供了以下数据框:

  a b c d e f
1 2 1 4 4 a c
2 3 3 5 2 c d
3 4 6 6 8 a d
4 2 2 3 5 b c

列 e 和 f 代表我用来计算每行平均值的第一列和最后一列。例如,在第 1 行,将计算平均值,包括 a、b、c 列 ((2+1+4)/3 -> 2.3)所以我想获得以下输出:

  a b c d e f mean
1 2 1 4 4 a c 2.3
2 3 3 5 2 c d 3.5
3 4 6 6 8 a d 6
4 2 2 3 5 b c 2.5

我学会了如何创建索引,然后我想使用 RowMeans,但找不到正确的参数。

dframe %>%
mutate(e_indice = match(e, colnames(dframe)))%>%
mutate(f_indice = match(f, colnames(dframe)))%>%
mutate(mean = RowMeans(????, na.rm = TRUE))

非常感谢您的帮助

最佳答案

一个 dplyr 选项可以是:

dframe %>%
rowwise() %>%
mutate(mean = rowMeans(cur_data()[match(e, names(.)):match(f, names(.))]))

a b c d e f mean
<dbl> <dbl> <dbl> <dbl> <chr> <chr> <dbl>
1 2 1 4 4 a c 2.33
2 3 3 5 2 c d 3.5
3 4 6 6 8 a d 6
4 2 2 3 5 b c 2.5

关于R - 如何根据包含要用于操作的列的名称的额外列对每一行的不同列进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71308990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com