关于r:从不同向量/数据框的nrow结果创建数据框 | 珊瑚贝

Creating a data frame from nrow results of different vectors/data frames


我在不同的 data.frames 中有一些向量。我想计算每个向量的观察次数并从中列出。第一列应该是数据框名称,第二列应该是每个数据框中的观察数。一个最小的例子可能是,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
x <- c(1, 3, 4, 5, 6)
x1 <- data.frame(x)
y <- c(3, 9)
y1 <- data.frame(y)
z <- c(23, 43, 23, 12, 1, 3, 7,8,9)
z1 <- data.frame(z)

a <- nrow(x1)
b <- nrow(y1)
c <- nrow(z1)

d <- c(a, b, c)
e <- data.frame(d)
e

输出e是这样的,

1
2
3
4
5
> e
  d
1 5
2 2
3 9

但是,我想要这样,

1
2
3
4
5
>  e
  df.name nobs
1      x1    5
2      y1    2
3      z1    9

任何帮助将不胜感激。

  • 您在哪里找到 x2 和 x3? – 您在 d (data.framec) 处也有错字。此外,您正在手动完成所有操作,因此请手动添加名称……即setNames(c(a, b, c), c(‘x1’, ‘y1’, ‘z1’))
  • 是的。这是一个错字。修复它。


我们可以用 base R

做到这一点

1
stack(lapply(mget(c(“x1″,”y1″,”z1”)), nrow))[2:1]

这是你想要的吗?

1
2
3
4
5
6
7
8
9
10
11
12
13
x <- c(1, 3, 4, 5, 6)
x1 <- data.frame(x)
y <- c(3, 9)
y1 <- data.frame(y)
z <- c(23, 43, 23, 12, 1, 3, 7,8,9)
z1 <- data.frame(z)

library(purrr)
targlist <- list(x1,y1,z1)
data.frame(
    names=unlist(map(targlist,names)),
    nobs=unlist(map(targlist,nrow))
)

如果有多个列 names 会出现异常。也许你想要 names=paste0(“x”,1:length(targlist)) 代替。但这对你的例子来说很有趣。

  • 是的。谢谢你。


来源:https://www.codenong.com/50136369/

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?