我有一个dfs列表。 dfs都具有相同的列名。我想要:
(1)将其中一个列名更改为列表中df的名称
(2)full_join
名称更改后的所有dfs
my_list <- list(one = data.frame(Type = c(1,2,3), Class = c("a", "a", "b")),
two = data.frame(Type = c(1,2,3), Class = c("a", "a", "b")))
data.frame(Type = c(1,2,3),
one = c("a", "a", "b"),
two = c("a", "a", "b"))
Type one two
1 a a
2 a a
3 b b
答案 0 :(得分:4)
您可以使用dplyr::bind_rows
结合tidyr::spread
来获得相同的结果(如果您乐意考虑其他方法)。例如:
library(tidyverse)
my_list %>% bind_rows(.id = "groups") %>% spread(groups, Class)
#> Type one two
#> 1 1 a a
#> 2 2 a a
#> 3 3 b b
答案 1 :(得分:1)
第一步可能很棘手,但如果你迭代transformed <- sapply(names(my_list), function(name) {
df <- my_list[[name]]
colnames(df)[colnames(df) == 'Class'] <- name
df
}, simplify = FALSE, USE.NAMES = TRUE)
则很简单。
purrr::reduce
使用dplyr::full_join
和purrr::reduce(transformed, dplyr::full_join)
# Type one two
# 1 1 a a
# 2 2 a a
# 3 3 b b
可以获得结果:
String simplenumber= "10";
int num = Integer.parseInt(simplenumber);