我有一个空数据框,我想用另一个数据框填充它

I have an empty dataframe which I want to fill using another dataframe

我有一个空的数据框,它是我的模板

temp <- data.frame(matrix(ncol=3)) colnames(temp) <- c("variable", "group", "bin")

还有另一个包含这些详细信息的数据框:

info <- data.frame(group_abc = c("1", "2", "2", "3", "3", "3"), bin_abc = c("0-700", "700-750", "750-800", "800-850", "850-900", "900-950"))

我希望变量名称为 "group_abc",group 的值为 group_abc,bin 的值为 bin_abc.

当我尝试使用数据框中的值时,它给了我一条错误消息:Error in$<-.data.frame(tmp, group, value = c("0-699", "700-750", : replacement has 6 rows, data has 1

您可以通过将临时数据框设置为在初始化时具有正确的行数和正确的列数来解决此问题。

info <- data.frame(group_abc = c("1", "2", "2", "3", "3", "3"), bin_abc = c("0-700", "700-750", "750-800", "800-850", "850-900", "900-950"))

temp           <- data.frame(matrix(ncol=3, nrow = nrow(info))) 
colnames(temp) <- c("variable", "group", "bin")

temp$group <- info$group_abc
temp$bin   <- info$bin_abc

只需将现有数据框(的值)分配给新名称,但只需一步即可更改列名:

 info <- data.frame(group_abc = c("1", "2", "2", "3", "3", "3"), bin_abc = c("0-700", "700-750", "750-800", "800-850", "850-900", "900-950"))
 temp <- setNames( info, c("group", "bin"))

> temp
  group     bin
1     1   0-700
2     2 700-750
3     2 750-800
4     3 800-850
5     3 850-900
6     3 900-950

如果您只希望复制现有数据框的一部分,则可以在 setNames 调用的 info 参数上使用“[”来选择行或列或同时选择两者。