Создание фрейма данных из nrow результатов разных векторов / фреймов данных - PullRequest
0 голосов
/ 02 мая 2018

У меня есть несколько векторов в разных фреймах данных. Я хочу посчитать количество наблюдений каждого вектора и составить из него список. Первый столбец должен содержать имена фреймов данных, а второй столбец - количество наблюдений в каждом фрейме данных. Минимальный пример может быть,

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 выглядит так,

> e
  d
1 5
2 2
3 9

Однако я хочу это таким образом,

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

Любая помощь будет с благодарностью.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Мы можем сделать это с base R

stack(lapply(mget(c("x1", "y1", "z1")), nrow))[2:1]
0 голосов
/ 02 мая 2018

Это то, что вы хотите?

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)) вместо. Но это было весело для вашего примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...