R 将行中的所有数据移到一列上

R 将行中的所有数据移到一列上,r,dataframe,R,Dataframe,我正在使用一个名为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

我正在使用一个名为
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

我们可以首先得到
B
NA
的值的索引,然后移动这些行的列值

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
数据

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")

df请注意:我的实际数据集有10000多行和20多列,因此我想可以引用特定的行并更新条目,但我甚至不知道如何正确执行。如果可能的话,我仍然需要它来维护每种类型的数据。因此,对于
B
为空的每一行,您希望将该行中的值向左移动吗?因此,这将使列
E
为空或带有
NA
?对吗?我想我解释得不好。我特别希望第3行读取“a,2,c,1,NA”,因为这个错误只发生一次。如果我希望这样做,而不是找到空白的任何实例,它只影响第3行呢?@theShuffle Do
df[3,2:(ncol(df)-1)]我得到一个错误,因为我的一些数据类型是因子。如何解决这个问题?首先将所有数据转换为字符
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")