Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用标题编号名称对选定列求平均值_R_Dplyr - Fatal编程技术网

R 使用标题编号名称对选定列求平均值

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

我想合并列1:2和34:158,平均它们的值,并给它们一个新的列名,列190会提醒相同的情况。我发现dplyr的复杂性,比如列的标题是数字,我需要特别选择某些列,而不是所有数字列,比如:

我已经开始尝试:

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)