我在R中遇到了一个特殊的问题。我需要避免在使用count((和aggregate((函数后自动生成列名。如果代码是在一台有其他基本语言的机器上运行的,R会分配一个不同的列名,因此我的代码会抛出一个错误。
我写的:
aggregated_data <- aggregate(data$diff, by = list(P_key = data$P_key), FUN=sum)
names(aggregated_data)[names(aggregated_data) == "x"] <- "d_sum"
count_data <- count(data, P_key)
names(count_data)[names(count_data) == "n"] <- "Obs"
变量";x〃;以及";n〃;如果计算机的语言不同,则会自动生成并更改。我需要一种可以直接分配";d_sum";以及";Obs";并避免这个问题。
数据(重命名前-用于聚合函数(:
P_key x
1 115.770.11.5 21065
2 115.882.KJ.1 223451
3 115.883.KJ.1 47847
4 616.222.11.1 337464
数据(显式重命名"x"列后-用于聚合函数(:
P_key d_sum
1 115.770.11.5 21065
2 115.882.KJ.1 223451
3 115.883.KJ.1 47847
4 616.222.11.1 337464
我需要避免自动生成的列名";x〃;,并将其分配为"0";d_sum";。因此,避免了代码第二行中的显式重命名。
任何帮助都将不胜感激。
关于骨料:
# your approach:
aggregate(iris$Sepal.Length, by=list(Species=iris$Species), FUN=sum)
#> Species x
#> 1 setosa 250.3
#> 2 versicolor 296.8
#> 3 virginica 329.4
# instead, do this:
aggregate(Sepal.Length ~ Species, data = iris, sum)
#> Species Sepal.Length
#> 1 setosa 250.3
#> 2 versicolor 296.8
#> 3 virginica 329.4
由reprex包(v0.3.0(于2020-08-05创建
dplyr::count
有一个可以使用的name
参数。
您可以尝试以下操作:setNames(aggregated_data, c(names(aggregated_data)[1], "d_sum"))
Obs.也是如此