根据该数据帧中的值为数据帧列表创建名称

时间:2019-05-01 22:56:36

标签: r

我正在尝试在列中使用唯一值来命名数据帧列表中的另一列

library(data.table)

a <- c("BZ", "BZ", "BZ", "US", "US", "US")
b <- c(1, 3, 5, 2, 4, 6)
c <- data.table(a, b)
d <- split(c, c$a)

然后我想删除A列,并使用a列中的唯一值来命名B列

例如,如果我只有一个带有一个值的数据框,我可以这样做:

c <- subset(c, a == "BZ")
x <- unique(c$a)
setnames(c, "b", x)

是否可以对数据帧列表执行此操作?

2 个答案:

答案 0 :(得分:1)

我们可以使用lapply来循环list的{​​{1}},提取'a'的第一个元素(因为只有一个data.table元素并设置unique

的列名称
setnames

或者我们可以在library(data.table) d1 <- lapply(d, function(x) setnames(x[, .(b)], x$a[1])) 之前使用列的子集

split

如果我们不想删除该列

d2 <- split(c[, .(b)], c$a)
Map(setnames, d2, names(d2))

或使用lapply(d, function(x) setnames(x, "b", x$a[1]))

Map

答案 1 :(得分:0)

这可能不是最优雅的解决方案,但我认为它可以满足您的需求:

images