我有data.frame几个数字列,我想分配"逗号"类.这是需要的,因为我有一个中央数据框,我使用Openxlsx包过滤并保存到Excel.并且需要逗号类,以便数据在excel中以逗号格式显示
这是数据帧:
set.seed(10)
df_central_database <- data.frame(Category = as.character(sample(words[1:10], size = 50, replace = TRUE)) ,
Summ_Income =sample(1000:10000, size = 50, replace = TRUE),
Summ_Securities =sample(1000:10000, size = 50, replace = TRUE),
Summ_Bonds =sample(1000:10000, size = 50, replace = TRUE),
Summ_Options =sample(1000:10000, size = 50, replace = TRUE)
)
str(df_central_database)
'data.frame': 50 obs. of 5 variables:
$ Category : Factor w/ 10 levels "a","able","about",..: 6 4 5 7 1 3 3 3 7 5 ...
$ Summ_Income : int 4189 9428 3213 5258 2724 6249 5135 5207 4598 5548 ...
$ Summ_Securities: int 4099 1551 4321 4668 9229 8999 9854 5295 7242 4832 ...
$ Summ_Bonds : int 8916 2774 1625 2416 4001 2620 2318 3615 9425 1922 ...
$ Summ_Options : int 3008 5823 6963 8633 2342 7031 7855 9988 3369 8967 ...
Run Code Online (Sandbox Code Playgroud)
现在更改列类是用每行一行完成的,如下所示:
class(df_central_database$Summ_Income) <- "comma"
class(df_central_database$Summ_Securities) <- "comma"
class(df_central_database$Summ_Bonds) <- "comma"
class(df_central_database$Summ_Options) <- "comma"
str(df_central_database)
'data.frame': 50 obs. of 5 variables:
$ Category : Factor w/ 10 levels "a","able","about",..: 6 4 5 7 1 3 3 3 7 5 ...
$ Summ_Income :Class 'comma' int [1:50] 4189 9428 3213 5258 2724 6249 5135 5207 4598 5548 ...
$ Summ_Securities:Class 'comma' int [1:50] 4099 1551 4321 4668 9229 8999 9854 5295 7242 4832 ...
$ Summ_Bonds :Class 'comma' int [1:50] 8916 2774 1625 2416 4001 2620 2318 3615 9425 1922 ...
$ Summ_Options :Class 'comma' int [1:50] 3008 5823 6963 8633 2342 7031 7855 9988 3369 8967 ...
Run Code Online (Sandbox Code Playgroud)
是否可以使用dplyr mutate_at进行类分配,就像这样?
df_central_database %>%
mutate_at(.vars = vars(contains("Summ")),
.funs = class(df_central_database$Income) <- "comma") %>%
str()
Run Code Online (Sandbox Code Playgroud)
或者任何其他快捷方式,它可以帮助我将一些列类改为逗号,只需一次猛扑即可.
谢谢拉斐尔
获取要更改为向量的内容的名称:
> changers = names(df_central_database)[grepl("Summ",names(df_central_database))]
> changers
[1] "Summ_Income" "Summ_Securities" "Summ_Bonds" "Summ_Options"
Run Code Online (Sandbox Code Playgroud)
然后将它们打成一个循环:
> for(n in changers){class(df_central_database[[n]])= "comma"}
Run Code Online (Sandbox Code Playgroud)
不需要额外的包来做这件事.