相关疑难解决方法(0)

在R中附加数据集

我有2个数据集:

数据1:

Var1 Var2   Var3    Var4
10    10      2   3
9      2      8   3
6      4      4   8
7      3     10   8
Run Code Online (Sandbox Code Playgroud)

数据2:

Var1 Var5   Var3    Var6
  3    6      6   4
  1    2      5   1
  9    2      2   9
  2    6      3   2
Run Code Online (Sandbox Code Playgroud)

现在我想附加这2个数据集

最终数据:

Var1  Var2    Var3  Var4  Var5 Var6
10      10       2     3        
9        2       8     3        
6        4       4     8        
7        3      10     8        
3                      4     6    6
1                      1     2    5
9                      9     2    2
2 …
Run Code Online (Sandbox Code Playgroud)

merge r

1
推荐指数
2
解决办法
4313
查看次数

仅使用公共row.names在R中组合data.frames

我有五个data.frames,其中包含不同样本集的基因表达数据.我在每个data.set中有不同的行数,因此只有部分重叠的row.names(基因).

现在我希望a)过滤五个data.frames以仅包含所有data.frames中存在的基因和b)将这些基因的基因表达数据组合到一个data.frame.

我到目前为止所能找到的只是合并,但这只能合并两个data.frames,所以我必须多次使用它.有没有更简单的方法?

merge r dataframe

1
推荐指数
1
解决办法
4884
查看次数

如何在不获取拆分列的情况下合并data.tables列表?

我即将合并大型数据集.这就是为什么我尝试使用data.table并且对它的速度感到激动.

# base R
system.time(
  M1 <- Reduce(function(...) merge(..., all=TRUE), L)
  )
# user  system elapsed 
# 5.05    0.00    5.20 

# data.table    
library(data.table)
L.dt <- lapply(L, function(x) setkeyv(data.table(x), c("sid", "id")))
system.time(
  M2 <- Reduce(function(...) merge(..., all=TRUE), L.dt)
  )
# user  system elapsed 
# 0.12    0.00    0.12
Run Code Online (Sandbox Code Playgroud)

两种方法都产生相同的值,但是有些列使用data.table进行拆分.

基地R:

set.seed(1)
car::some(M1, 5)
#        sid    id         V3        V4          a         b
# 60504    1 60504 -0.6964804 -1.210195         NA        NA
# 79653    1 79653 -2.5287163 -1.087546         NA        NA
# 111637   2 11637  0.7104236        NA …
Run Code Online (Sandbox Code Playgroud)

merge r data.table

1
推荐指数
1
解决办法
118
查看次数

如何合并列表中元素的数据框?

请考虑以下列表.

lst <- list()
lst[[1]] <- data.frame(category = c(1:10), freq = rnorm(10))
lst[[2]] <- data.frame(category = seq(4,26,2), freq = rnorm(12))
lst[[3]] <- data.frame(category = 2:8, freq = rnorm(7))
Run Code Online (Sandbox Code Playgroud)

如果它们具有不同的维度和级别,我如何合并此类别中的数据框,因为它们具有不同的维度和级别,从而生成如下所示的data.frame?

category  freq.1      freq.2     freq.3
    1   1.2496154         NA         NA
    2  -1.3537722         NA -1.3257535
    3  -0.3976305         NA  0.5761957
    4   0.7721428 -0.2360636 -1.0953490
    5   0.7653834         NA  0.9037617
    6   0.2192559 -0.2543082 -1.6640824
    7   0.3400192         NA -1.2961707
    8  -0.8457081 -0.7431021  0.9321560
    9  -1.2132615         NA         NA
   10   1.8387899  0.8342264         NA
   12          NA -0.5409164         NA
   14          NA  0.1638546 …
Run Code Online (Sandbox Code Playgroud)

r

0
推荐指数
1
解决办法
170
查看次数

合并多个数据框

df1 <- data.frame(name = c("A","B","C"), f1 = c(1,2,3), f2 = c("zz","mo","do"))
df2 <- data.frame(name = c("D","B","C"), f1 = c(1,4,6), f2 = c("ok","no","do"))
df3 <- data.frame(name = c("D","E","C"), f1 = c(1,2,3), f2 = c("so","yo","kl"))
Run Code Online (Sandbox Code Playgroud)

我想将它们合并到一个数据框中,以便它看起来像

name    df.1f1   df1.f2    df2.f1   df2.f2   df3.f1   df3.f2
A            1       zz        na       na       na       na     
B            2       mo         4       no       na       na      
C            3       do         6       do        3       kl
D           na       na         1       ok        1       so
E           na       na        na       na        2       yo
Run Code Online (Sandbox Code Playgroud)

虽然我可以使用重复的dplyr :: full_join来做到这一点,但它太繁琐了.谁有更好的方法来做到这一点?

r

0
推荐指数
2
解决办法
7433
查看次数

将列表中的所有数据帧合并到r中的单个数据帧

这个是一个doozy.我一直试图弄清楚这一点,但我一直在撞墙.所以,我是以科学的名义来寻找这个.

简介

我在目录中有大约93个具有唯一名称的文件.我使用r将这些文件读入列表.

files.measurements <- as.character(list.files(path = "~/measurements/", full.names = TRUE))

所以,这样做只是找到目录中所有文件的名称.所有这些文件都是.csv.给我带来了很多麻烦.

然后我读了文件的名称. measurements.filenames <- gsub(".csv", "", basename(files.measurements))

读取这些文件的原因是因为每个文件名都代表测量的名称.文件中的相同项目可能存在也可能不存在于多个文件中.

有5个文件名,即,NameA,NameB,NameC,NameD,NameE.每个文件有8个列名:id,name,sex,dob,...,measurement.(每个文件名的名称相同)

当然,id是唯一的,但NameB如果存在,则可能存在也可能不存在int NameA.

需要 所以,我需要做的就是这些93个文件合并到一个单一的数据帧,使得数据帧中包含id,name,sex,dob和,......而不是measurement文件名- NameA,例如.对于相同的id,值应该相同,如果id不存在,则rbind对于具有附加列的数据帧,否则如果id存在,则只需measurement使用新列名称添加到列中NameB.

你能帮忙吗?这是为了研究收集心血管和HIV疾病的数据.

编辑 数据 NameA

id  gender  dob status  date    measurement
1   F   5/24/1942   Rpt 1/12/2018   2.9
2   F   12/1/2017   Rpt 1/12/2018   0.622 …
Run Code Online (Sandbox Code Playgroud)

r list dataframe

0
推荐指数
1
解决办法
76
查看次数

R - 将三个数据帧的列表合并为单个数据帧,其中ID在第一列中,接下来的三列显示值

这是我的数据框列表:

[[1]]
ID   Value
A   1
B   1
C   1

[[2]]
ID   Value
A   1
D   1
E   1

[[3]]
ID   Value
B   1
C   1
Run Code Online (Sandbox Code Playgroud)

我在左侧列中具有唯一(非冗余)ID的单个数据帧之后,在列中复制,并将NULL值设置为0:

ID   [1]Value   [2]Value   [3]Value  
A    1          1          0
B    1          0          1
C    1          0          1
D    0          1          0
E    0          1          0
Run Code Online (Sandbox Code Playgroud)

我试过了:

Reduce(function(x, y) merge(x, y, by=ID), datahere)

这提供了单个列表,但不考虑原始值的来源,并且在新行中重复重复的ID.

rbindlist(datahere, use.names=TRUE, fill=TRUE, idcol="Replicate")
Run Code Online (Sandbox Code Playgroud)

这提供了一个单独的列表,其中[x]值编号作为一个名为Replicate的新列,但它仍然不在我想要的结构中,因为ID列有冗余.

r dataframe

0
推荐指数
1
解决办法
2140
查看次数

标签 统计

r ×7

dataframe ×3

merge ×3

data.table ×1

list ×1