相关疑难解决方法(0)

如何在R中有效地实现合并

背景

几种SQL语言(我主要使用postgreSQL)有一个名为coalesce的函数,它返回每行的第一个非空列元素.当表中包含大量NULL元素时,这可以非常有效地使用.

我在R中的许多场景中都遇到过这种情况,当处理不太结构化的数据时,其中包含很多NA.

我自己做了一个天真的实现,但它的速度非常慢.

coalesce <- function(...) {
  apply(cbind(...), 1, function(x) {
          x[which(!is.na(x))[1]]
        })
}
Run Code Online (Sandbox Code Playgroud)

a <- c(1,  2,  NA, 4, NA)
b <- c(NA, NA, NA, 5, 6)
c <- c(7,  8,  NA, 9, 10)
coalesce(a,b,c)
# [1]  1  2 NA  4  6
Run Code Online (Sandbox Code Playgroud)

coalesce在R中有没有有效的方法?

r coalesce

37
推荐指数
6
解决办法
2万
查看次数

合并列以删除NA

我在R中有一些列,每行只有一个值,其余的将是NA的.我想将这些组合成一个具有非NA值的列.有谁知道这样做的简单方法.例如,我可以如下:

data <- data.frame('a' = c('A','B','C','D','E'),
                   'x' = c(1,2,NA,NA,NA),
                   'y' = c(NA,NA,3,NA,NA),
                   'z' = c(NA,NA,NA,4,5))
Run Code Online (Sandbox Code Playgroud)

所以我会的

'a' 'x' 'y' 'z'  
 A   1   NA  NA  
 B   2   NA  NA  
 C  NA   3   NA  
 D  NA   NA  4  
 E  NA   NA  5
Run Code Online (Sandbox Code Playgroud)

而且我会得到

 'a' 'mycol'  
  A   1  
  B   2  
  C   3  
  D   4  
  E   5  
Run Code Online (Sandbox Code Playgroud)

包含NA的列的名称根据查询中较早的代码而更改,因此我将无法显式调用列名,但是我将包含NA的列的列名称存储为向量,例如,在此示例中cols <- c('x','y','z'),所以可以调用列data[, cols].

任何帮助,将不胜感激.

谢谢

merge r na

35
推荐指数
5
解决办法
3万
查看次数

将具有交替缺失值的两个字符串列合并为一个

我有一个数据框,有两列"a"和"b",交替缺失值(NA)

a      b
dog    <NA>
mouse  <NA>
<NA>   cat
bird   <NA>
Run Code Online (Sandbox Code Playgroud)

我想"合并"/将它们组合到一个看起来像这样的新列c,即NA每行中的非元素被选中:

c
dog
mouse
cat
bird
Run Code Online (Sandbox Code Playgroud)

我试过mergejoin,但既不工作,因为我想要的.也许是因为我没有合并的id?对于整数,我只是绕过这个并添加两列,但在我的情况下如何?

r

9
推荐指数
5
解决办法
2506
查看次数

标签 统计

r ×3

coalesce ×1

merge ×1

na ×1