这个问题在这里已有答案:
我试图通过year
分组并为每个weight
求和year
但是当我的新数据框创建时,列名称以恼人的“X”开头,如“X2000
”而不是2000
。当然我可以删除它或在创建后用“”替换它但我希望它不是从一开始就创建的,因为这个方法将应用于具有更多列的数据帧。
library(tidyverse)
year<-c("2000","2000","2001","2002","2000","2002")
weight<-c(0.5,0.7,0.8,0.7,0.6,0.9)
YG<-data.frame(year,weight)
w<-data.frame(YG %>%
group_by(year) %>%
summarise(n = round(sum(weight)),
g = n()) %>%
select(-g) %>%
spread(year, n, fill = 0))
虽然不是真的可取,但你想要的是在check.names = FALSE
电话中的data.frame
:
data.frame(YG %>% group_by(year) %>%
summarise(n = round(sum(weight)), g = n()) %>%
select(-g) %>% spread(year, n, fill = 0),
check.names = FALSE)
# 2000 2001 2002
# 1 2 1 2
另一种选择:new_YG是w
names(new_YG)<-sapply(str_remove_all(colnames(new_YG),"X"),"[")
names(new_YG)
new_YG