在r中更改多个数据帧列标题
我正在运行的程序使用以下代码创建三个数据帧:在r中更改多个数据帧列标题,r,dataframe,names,R,Dataframe,Names,我正在运行的程序使用以下代码创建三个数据帧: datuniqueNDC <- data.frame(lapply(datlist, function(x) length(unique(x$NDC)))) datuniquePID <- data.frame(lapply(datlist, function(x) length(unique(x$PAYERID))) datlengthNDC <- data.frame(lapply(datlist, function(x) le
datuniqueNDC <- data.frame(lapply(datlist, function(x) length(unique(x$NDC))))
datuniquePID <- data.frame(lapply(datlist, function(x) length(unique(x$PAYERID)))
datlengthNDC <- data.frame(lapply(datlist, function(x) length(x$NDC)))
我试图将这些行合并到一个数据框中,结果如下:
X Y Z
1 182 178 76
2 34 31 7
3 10674 10021 653
但是rbind命令不起作用,因为所有列的名称都不同。在创建上面的每个变量之后,我可以通过使用colnames命令使其工作,但是似乎应该有一种更有效的方法通过使用apply命令或类似的命令来实现这一点。谢谢你的帮助。一种方法是,因为每件事似乎都是一个数字,那就是:
mylist <- list(dat1,dat2,dat3)
# assuming your three data.frames are dat1:dat3 respectively
do.call("rbind",lapply(mylist, as.matrix))
# X182L X178L X76L
#[1,] 182 178 76
#[2,] 34 31 7
#[3,] 10674 10021 653
mylist由于在lapply
调用中使用的函数都是标量,因此如果使用sapply
会更容易sapply
返回向量,您可以rbind
datuniqueNDC <- sapply(datlist, function(x) length(unique(x$NDC)))
datuniquePID <- sapply(datlist, function(x) length(unique(x$PAYERID))
datlengthNDC <- sapply(datlist, function(x) length(x$NDC))
dat <- as.data.frame(rbind(datuniqueNDC,datuniquePID,datlengthNDC))
names(dat) <- c("x", "y", "z")
datuniqueNDC也许您应该举例说明datlist
的外观。datlist
是一个包含三个不同数据帧的列表,数据帧的行数和列数各不相同。上面的代码用于从所有三个数据帧中提取相似的值。请尝试:sappy(数据列表、函数(x)c(长度(唯一的(x$NDC))、长度(唯一的(x$PAYERID))、长度(x$NDC)))
谢谢,我认为这至少可以简化一些事情。这正是我想要的。谢谢。
datuniqueNDC <- sapply(datlist, function(x) length(unique(x$NDC)))
datuniquePID <- sapply(datlist, function(x) length(unique(x$PAYERID))
datlengthNDC <- sapply(datlist, function(x) length(x$NDC))
dat <- as.data.frame(rbind(datuniqueNDC,datuniquePID,datlengthNDC))
names(dat) <- c("x", "y", "z")
dat <- as.data.frame(sapply(datlist, function(x) {
c(length(unique(x$NDC)), length(unique(x$PAYERID), length(x$NDC))
}))
names(dat) <- c("x", "y", "z")