发布
社区首页 >问答首页 >如何删除空单元格和减少列

如何删除空单元格和减少列
EN

Stack Overflow用户
提问于 2018-08-17 05:37:49
回答 1查看 181关注 0票数 0

我有一张表,大致看起来像这样:

代码语言:javascript
代码运行次数:0
复制
| variable | observer1 | observer2 | observer3 | final | 
| -------- | --------- | --------- | --------- | ----- |
| case1    |           |           |           |       |
| var1     | 1         | 1         |           |       |
| var2     | 3         | 3         |           |       |
| var3     | 4         | 5         |           | 5     |
| case2    |           |           |           |       |
| var1     | 2         |           | 2         |       |
| var2     | 5         |           | 5         |       |
| var3     | 1         |           | 1         |       |
| case3    |           |           |           |       |
| var1     |           | 2         | 3         | 2     |
| var2     |           | 2         | 2         |       |
| var3     |           | 1         | 1         |       |
| case4    |           |           |           |       |
| var1     | 1         |           | 1         |       |
| var2     | 5         |           | 5         |       |
| var3     | 3         |           | 3         |       |

观察者有三列,但只有两列被填满了。首先,我想计算IRR,所以我需要一个表,它有两列,没有空单元格,如下所示:

代码语言:javascript
代码运行次数:0
复制
| variable | observer1 | observer2 |
| -------- | --------- | --------- |
| case1    |           |           |
| var1     | 1         | 1         |
| var2     | 3         | 3         |
| var3     | 4         | 5         |
| case2    |           |           |
| var1     | 2         | 2         |
| var2     | 5         | 5         |
| var3     | 1         | 1         |
| case3    |           |           |
| var1     | 2         | 3         |
| var2     | 2         | 2         |
| var3     | 1         | 1         |
| case4    |           |           |
| var1     | 1         | 1         |
| var2     | 5         | 5         |
| var3     | 3         | 3         |

我尝试使用tidyverse包,但我不确定。一些'ifelse()‘魔法可能会更容易一些。有没有一种简单明了的方法来做这样的事情呢?谁能给我指给我正确的函数来使用?或者只需要在stackoverflow上搜索一个关键字?我发现有很多方法可以删除整个空列或空行。

编辑:我删除了指向原始数据的链接。这是不必要的。感谢Lamia的工作回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-17 09:48:22

在3列observer1observer2observer3中,有时会有2个非NA值、1个非NA值或3个NA值。如果要合并3列,可以执行以下操作:

代码语言:javascript
代码运行次数:0
复制
res = data.frame(df$coding,t(apply(df[paste0("observer",1:3)],1,function(x) x[!is.na(x)][1:2])))

apply函数将为每行返回2个非NA值,如果有2个,则返回一个非NA值;如果只有一个值,则返回一个NA;如果行中没有数据,则返回两个NA。然后,我们将此结果放入第一列(coding)的数据帧中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51885664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档