如何在R中将特定行向右移动

时间:2014-04-03 10:23:20

标签: r csv dataframe

我有一个场景,我正在尝试将CS​​V加载到R.我无法修改CSV,因为它是一个系统文件

以下是我正在处理的几行CSV。我想换行没有。右边是1,因为CSV列中的列标题不正确,之后我必须删除NULL列。

以下是我的data.frame

    V1  V2  V3  V4  V5  V6  V7  V8  V9
1   NA  Cy1 NA  Cy2 NA  Cy3 NA  Cy4 NA
2   A1  NA  NA  NA  NA  NA  NA  NA  NA
3   A2  NA  94  NA  25  NA  11  NA  119
4   A3  NA  94  NA  25  NA  13  NA  198
5   B1  NA  94  NA  32  NA  113 NA  129
6   B2  NA  100 NA  95  NA  102 NA  12
7   B3  NA  NA  NA  NA  NA  NA  NA  NA
8   B4  NA  120 NA  14  NA  110 NA  25
9   C2  NA  119 NA  11  NA  40  NA  25
10  C3  NA  198 NA  13  NA  45  NA  32

在这里,我试图实现像

这样的东西
    V1  V3  V5  V7  V9
1   NA  Cy1 Cy2 Cy3 Cy4
2   A1  NA  NA  NA  NA
3   A2  94  25  11  119
4   A3  94  25  13  198
5   B1  94  32  113 129
6   B2  100 95  102 12
7   B3  NA  NA  NA  NA
8   B4  120 14  110 25
9   C2  119 11  40  25
10  C3  198 13  45  32

如您所见,我必须将data.frame的第一行移至right,然后删除' NA'列。

有人可以帮助我。提前致谢

谢谢, KC

1 个答案:

答案 0 :(得分:2)

更新

V1 <- c(NA, "A1", "A2")
V2 <- c("Cy1", NA, NA)
V3 <- c(NA, NA, 94)
V4 <- c("Cy2", NA, NA)
V5 <- c(NA, NA, 25)
V6 <- c("Cy3", NA, NA)
df <- data.frame(V1,V2,V3,V4,V5,V6)
df

cols <- c(5,3)

df
for (j in cols) {
df[1,j] <- paste(df[1,j-1])
}
df

for (j in cols) {
df[ ,j-1] <- NULL
}
df

以上代码是最低限度的工作示例。让它运行,看它是否做你想要的(应该)。 您需要指定要保留的列(读取:您想要将值转换为的所有列)及其对象cols中的数字降序 order(或删除列将搞砸)。

(我是Stata人,所以对那里的R-pros:请原谅我没有使用apply代替循环。)