首页 > 解决方案 > 将行中的所有数据移到一列

问题描述

我正在使用一个名为的数据框myData,我正在尝试清理数据。在其中一行(在示例代码中,第 3 行)中,出现数据输入错误,B 留空,C、D、E 现在包含 B、C、D 的数据。如何在 RStudio 中使用基本命令?我完全被困住了。

   A   B   C   D   E
 --------------------
1  a   3   c   2   f
2  a   2   b   1   f
3  a       2   c   1
4  a   1   b   2   f
5  b   2   c   3   e

标签: rdataframe

解决方案


我们可以首先获取值的索引 where BisNA然后移动这些行的列值。

rows <- df$B == ""
df[rows, 2:(ncol(df) - 1)] <- df[rows, 3:ncol(df)]
df[rows, ncol(df)] <- NA

df
#  A B C D    E
#1 a 3 c 2    f
#2 a 2 b 1    f
#3 a 2 c 1 <NA>
#4 a 1 b 2    f
#5 b 2 c 3    e

要更改列类型,我们可以使用type.convert

df <- type.convert(df)

数据

df <- structure(list(A = c("a", "a", "a", "a", "b"), B = c("3", "2", 
"", "1", "2"), C = c("c", "b", "2", "b", "c"), D = c("2", "1", 
"c", "2", "3"), E = c("f", "f", "1", "f", "e")), row.names = c("1", 
"2", "3", "4", "5"), class = "data.frame")

推荐阅读