R,向上移动部分行

时间:2015-08-28 16:22:07

标签: r

如何将ChangeJanAug下的数据从第21行向上移动,以便NA填充正确的数字?由于我不想转移所有行,我必须弄清楚要做什么。

             city latitude JanTemp AprTemp AugTemp ChangeJanAug
1         MiamiFL       26      67      75      83           NA
2       HoustonTX       30      50      68      82           NA
3        MobileAL       31      50      68      82           NA
4        DallasTX       33      43      66      85           NA
5       PhoenixAZ       33      54      70      92           NA
6    LosAngelesCA       34      58      63      75           NA
7       MemphisTN       35      40      63      81           NA
8       NorfolkVA       37      39      57      77           NA
9  SanFranciscoCA       38      49      56      64           NA
10    BaltimoreMD       39      32      53      76           NA
11   KansasCityMO       39      28      55      76           NA
12   WashingtonDC       39      31      53      74           NA
13   PittsburghPA       40      25      50      71           NA
14    ClevelandOH       41      25      48      70           NA
15      NewYorkNY       41      32      53      76           NA
16       BostonMA       42      29      48      72           NA
17     SyracuseNY       43      22      46      68           NA
18  MinneapolisMN       45      12      46      71           NA
19     PortlandOR       46      40      51      69           NA
20       DuluthMN       47       7      39      64           NA
21           <NA>       NA      NA      NA      NA           16
22           <NA>       NA      NA      NA      NA           32
23           <NA>       NA      NA      NA      NA           32
24           <NA>       NA      NA      NA      NA           42
25           <NA>       NA      NA      NA      NA           38
26           <NA>       NA      NA      NA      NA           17
27           <NA>       NA      NA      NA      NA           41
28           <NA>       NA      NA      NA      NA           38
29           <NA>       NA      NA      NA      NA           15
30           <NA>       NA      NA      NA      NA           44
31           <NA>       NA      NA      NA      NA           48
32           <NA>       NA      NA      NA      NA           43
33           <NA>       NA      NA      NA      NA           46
34           <NA>       NA      NA      NA      NA           45
35           <NA>       NA      NA      NA      NA           44
36           <NA>       NA      NA      NA      NA           43
37           <NA>       NA      NA      NA      NA           46
38           <NA>       NA      NA      NA      NA           59
39           <NA>       NA      NA      NA      NA           29
40           <NA>       NA      NA      NA      NA           57

非常感谢你!

2 个答案:

答案 0 :(得分:1)

我同意@Heroka的意见,认为避免这种情况会更好。但是现在您已拥有此表单中的数据,您可以使用以下代码行将列ChangeJanAug的条目向上移动20行:

df$ChangeJanAug <- c(df$ChangeJanAug[21:nrow(df)],rep(NA,(nrow(df)-20)))

之后你可以&#34;清理&#34;带有

NA条目块
df <- df[1:20,]

如果你计划删除这样的NA,你可能不需要担心矢量回收,你可以简单地使用

df$ChangeJanAug <- df$ChangeJanAug[21:nrow(df)] 

第一步。

答案 1 :(得分:1)

这可能是一个选项

data$ChangeJanAug_new = c(data$ChangeJanAug[-(seq(20))], rep(NA, 20))
out = data[colnames(data) != "ChangeJanAug"]

#later if you want to remove NAs you could do this
out[!is.na(out$ChangeJanAug_new),]

使用na.omitcbind,您可以执行此操作(假设原始数据与您在问题中提到的完全相同)

cbind(na.omit(data[,-6]), ChangeJanAug = na.omit(data$ChangeJanAug))

#             city latitude JanTemp AprTemp AugTemp ChangeJanAug
#1         MiamiFL       26      67      75      83           16
#2       HoustonTX       30      50      68      82           32
#3        MobileAL       31      50      68      82           32
#4        DallasTX       33      43      66      85           42
#5       PhoenixAZ       33      54      70      92           38
#6    LosAngelesCA       34      58      63      75           17
#7       MemphisTN       35      40      63      81           41
#8       NorfolkVA       37      39      57      77           38
#9  SanFranciscoCA       38      49      56      64           15
#10    BaltimoreMD       39      32      53      76           44
#11   KansasCityMO       39      28      55      76           48
#12   WashingtonDC       39      31      53      74           43
#13   PittsburghPA       40      25      50      71           46
#14    ClevelandOH       41      25      48      70           45
#15      NewYorkNY       41      32      53      76           44
#16       BostonMA       42      29      48      72           43
#17     SyracuseNY       43      22      46      68           46
#18  MinneapolisMN       45      12      46      71           59
#19     PortlandOR       46      40      51      69           29
#20       DuluthMN       47       7      39      64           57