R 使用标题编号名称对选定列求平均值
我想合并列1:2和34:158,平均它们的值,并给它们一个新的列名,列190会提醒相同的情况。我发现dplyr的复杂性,比如列的标题是数字,我需要特别选择某些列,而不是所有数字列,比如: 我已经开始尝试:R 使用标题编号名称对选定列求平均值,r,dplyr,R,Dplyr,我想合并列1:2和34:158,平均它们的值,并给它们一个新的列名,列190会提醒相同的情况。我发现dplyr的复杂性,比如列的标题是数字,我需要特别选择某些列,而不是所有数字列,比如: 我已经开始尝试: library(dplyr) df2<- df %>% dplyr::select(`1`:`2`, `34`:`158`) 你可以做: library(dplyr) df %>% type.convert(as.is = TRUE) %>% mutat
library(dplyr)
df2<- df %>% dplyr::select(`1`:`2`, `34`:`158`)
你可以做:
library(dplyr)
df %>%
type.convert(as.is = TRUE) %>%
mutate(Column1 = rowMeans(select(., `1`:`2`), na.rm = TRUE),
Column2 = rowMeans(select(., `34`:`158`), na.rm = TRUE)) %>%
select(A, Column1, Column2, Column3 = `190`)
# A Column1 Column2 Column3
#1 A 1.9 3.40 22.1
#2 B 6.8 1.65 7.4
#3 C 4.7 23.85 56.0
你可以做:
library(dplyr)
df %>%
type.convert(as.is = TRUE) %>%
mutate(Column1 = rowMeans(select(., `1`:`2`), na.rm = TRUE),
Column2 = rowMeans(select(., `34`:`158`), na.rm = TRUE)) %>%
select(A, Column1, Column2, Column3 = `190`)
# A Column1 Column2 Column3
#1 A 1.9 3.40 22.1
#2 B 6.8 1.65 7.4
#3 C 4.7 23.85 56.0
这是否有效:
> library(dplyr)
> df %>% mutate(across(`1`:`190`, as.numeric)) %>% rowwise() %>%
+ mutate(col1 = mean(c_across(`1`:`2`), na.rm = T), col2 = mean(c_across(`34`:`158`), na.rm = T)) %>% rename(col3 = `190`) %>%
+ select(A, col1, col2, col3)
# A tibble: 3 x 4
# Rowwise:
A col1 col2 col3
<chr> <dbl> <dbl> <dbl>
1 A 1.9 3.4 22.1
2 B 6.8 1.65 7.4
3 C 4.7 23.8 56
>
这是否有效:
> library(dplyr)
> df %>% mutate(across(`1`:`190`, as.numeric)) %>% rowwise() %>%
+ mutate(col1 = mean(c_across(`1`:`2`), na.rm = T), col2 = mean(c_across(`34`:`158`), na.rm = T)) %>% rename(col3 = `190`) %>%
+ select(A, col1, col2, col3)
# A tibble: 3 x 4
# Rowwise:
A col1 col2 col3
<chr> <dbl> <dbl> <dbl>
1 A 1.9 3.4 22.1
2 B 6.8 1.65 7.4
3 C 4.7 23.8 56
>
使用基数R
使用基数R
谢谢但是第190栏也可以改为第3栏吗?更新了答案。谢谢!但是第190栏也可以改为第3栏吗?更新了答案。谢谢!但是第190栏也可以改为第3栏吗?我不确定你的代码是否有拼写错误?我得到以下错误:函数cond中的错误:为函数“mean”选择方法时计算参数“x”时出错:c_只能在dplyr谓词中使用。您使用的是哪个版本的dplyr?我的是1.0.0,应该可以用了,我在动词中使用了c_,mutate是dplyr动词。我已经一字不差地发布了代码。如果Ronak的代码有效,那就好了。谢谢。不确定,因为错误不断出现。但是非常感谢您的检查!谢谢但是第190栏也可以改为第3栏吗?我不确定你的代码是否有拼写错误?我得到以下错误:函数cond中的错误:为函数“mean”选择方法时计算参数“x”时出错:c_只能在dplyr谓词中使用。您使用的是哪个版本的dplyr?我的是1.0.0,应该可以用了,我在动词中使用了c_,mutate是dplyr动词。我已经一字不差地发布了代码。如果Ronak的代码有效,那就好了。谢谢。不确定,因为错误不断出现。但是非常感谢您的检查!
> library(dplyr)
> df %>% mutate(across(`1`:`190`, as.numeric)) %>% rowwise() %>%
+ mutate(col1 = mean(c_across(`1`:`2`), na.rm = T), col2 = mean(c_across(`34`:`158`), na.rm = T)) %>% rename(col3 = `190`) %>%
+ select(A, col1, col2, col3)
# A tibble: 3 x 4
# Rowwise:
A col1 col2 col3
<chr> <dbl> <dbl> <dbl>
1 A 1.9 3.4 22.1
2 B 6.8 1.65 7.4
3 C 4.7 23.8 56
>
df <- type.convert(df, as.is = TRUE)
df$Column1 <- rowMeans( df[c("1", "2")], na.rm = TRUE)
df$Column2 <- rowMeans(df[c("34", "158")], na.rm = TRUE)