考虑一下下面的两条腿
library(tidyverse)
a <- tibble(time = c(-1, 0), value = c(100, 200))
b <- tibble(id = rep(letters[1:2], each = 3), time = rep(1:3, 2), value = 1:6)
因此,a和b有相同的列,b有一个名为id的额外列。我想做以下工作:通过b按id分组,然后在每个组的顶部添加Tibblea。因此,输出应该如下所示:
# A tibble: 10 x 3
id time value
<chr> <in
这种类型的“将列表整理成数据”的问题已经被问过几次了,但是我找不到一个解决方案来帮助我的特定问题。下面我举了一个小例子。通常,当使用R中的httr从API中获取数据时,我用来获取数据的大多数数据API都会以类似的嵌套列表格式返回数据,类似于这样:
nested_list = list(
list(
name = 'joe',
match = 13,
team = list(
list(
name = 'teama'
),
list(
name
我正在寻找一种方法来可靠地强制列表结构到data.frame或tibble,同时将一个或多个列保持为列表列。考虑以下列表结构:
d = data.frame(x = 1:10, y = 1.5*(1:10) + rnorm(10))
ex = list(label = "A", number = 1L, model = lm(y ~ x, data = d))
这并不是预期的那样:
lapply(ex, as_data_frame) %>% bind_rows()
因为"model“列中的lm对象在转换中被向量化。但是,在list中包装模型会得到预期的结果:
ex
我使用一个API来返回数据帧列表( Rblpapi bdh()函数)。我想使用列表的names()作为合并的单个数据框架中的一个新列,将数据放入长整洁格式。我有一个解决方案,但它容易出错,比它需要的慢,我怀疑。
#create example data set
library(tidyr)
obsA <- data_frame(
date = as.Date('2009-01-01') + 0:2,
X = rnorm(3, 0, 1),
Y = rnorm(3, 0, 2),
Z = rnorm(3, 0, 4)
)
obsB <- data_f
我有一个有两个值的向量
V <- c("Sp4","Sp5")
和数据帧,例如
col1 col2 col3
Sp1 2 2
Sp2 4 6
Sp3 6 4
我想根据向量在这个数据帧中添加NA,例如:
col1 col2 col3
Sp1 2 2
Sp2 4 6
Sp3 6 4
Sp4 NA NA
SP5 NA NA
我试过了:
for (i in v){
df1[nrow(df1),] <- i
}
在下面的示例中,我从列表列表中选择特定列的唯一情况。我想我已经成功地完成了我想做的事情,但是我想知道数据集是否可以以更整洁的方式组织(例如,不使用列表来组织像这样的数据),并充分使用tidyverse来实现相同的输出(例如,使用purr或类似的)。正如您所看到的,我使用了tidyverse的一部分,但我感兴趣的是,是否有可能避免for循环、lapply和可能不使用列表来组织这样的数据。
#Load libraries
library(tidyverse)
library(stringi)
#Generate datasets to create example
dat1 <- tibb
我有一个表名列表,希望能够在R中可视化它们之间的关系,所以从表A到表A的一行
例如,如果我有一个dataframe:
Col 1 Col 2 Col 3 Col 4
Table A | Table B | Table C |
Table Z | Table A | Table C | Table Y
Table K | Table L | Table M | Table B
Table J | Table H |
我以前用before进行了映射,但是数据的结构不同。只有两列:从和到。如果我有这样的多个列,有没有一种图形的方法?我在这方面找不到多少资
我有一个命名向量的列表:
> x <- list(c(a=1, b=2, c=3, d=4),c(a=5, b=6 ,c=7 ,d=8),c(a=32, c=46, d=55, e=100))
> x
[[1]]
a b c d
1 2 3 4
[[2]]
a b c d
5 6 7 8
[[3]]
a c d e
32 46 55 100
我想把它强制到一个data.frame中,这样命名为类似的值就会落入一个列中:
> y <- data.frame(a=c(1,5,32), b=c(2,6,NA), c=c(3,7,46
我正在尝试使用整洁的函数(如purrr中可用的函数)将列表的命名列表转换为数据格式。我尝试过来自和的解决方案,但它们都不适合我(例如,行不是单一的观察)。另外,两个选项都没有提供关于如何保持对象(?)的解决方案。与dataframe中的新行关联的名称(例如,e1m1_fit和e2m2a_fit)。
library("tidyverse")
# The named list I am trying to convert to a dataframe/tibble:
df <-
list(e1m1_fit = structure(list(term = c("(
给出了这样一个data.frame列表:
list_dfs <- list(a = mtcars, b = quakes, a = mtcars, c = USArrests)
names(list_dfs)
#> [1] "a" "b" "a" "c"
如何应用列表中的data.frame名称的函数?具体来说,我想将名为rbind的data.frames (在本例中称为a )放在一起,以便生成的列表只有三个元素。如果我把他们都绑起来,我会这样做的:
do.call(rbind, list_dfs)
#> Er
我正在尝试创建一个单独的列tibble,其中每一行都是向量中的单个单词,但我不确定如何添加列名,因为tibble还没有创建。
此代码:
as_tibble(strsplit("this is a test" , " "))
返回错误:
Error: Column 1 must be named
如何命名列1?
的结果中添加一个名称。
strsplit("this is a test" , " ")
但是这是一个字符串,所以不能命名?
[1]“本”是“一项”检验“。