Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在data.frame中按顺序和NAs填充数字_R_Dataframe_Rows_Fill_Na - Fatal编程技术网

在data.frame中按顺序和NAs填充数字

在data.frame中按顺序和NAs填充数字,r,dataframe,rows,fill,na,R,Dataframe,Rows,Fill,Na,下面是我的示例data.frame: df = read.table(text = 'colA colB colC colD 74001 9520 2 56 74006 9520 2 56 33021 9518 3 99 33024 9518 3 99 37001 9518 3 99 33014 9517 19 143 33023 9517 19 143 33050 9517 19 143

下面是我的示例data.frame:

df = read.table(text = 'colA  colB colC colD
74001   9520    2   56
74006   9520    2   56
33021   9518    3   99
33024   9518    3   99
37001   9518    3   99
33014   9517    19  143
33023   9517    19  143
33050   9517    19  143
34005   9517    19  143
34006   9517    19  143
37006   9517    19  143
38001   9517    19  143
38020   9517    19  143
38021   9517    19  143
39005   9517    19  143
39093   9517    19  143
40004   9517    19  143
40012   9517    19  143
41005   9517    19  143
41006   9517    19  143
41012   9517    19  143
41014   9517    19  143
41020   9517    19  143
41022   9517    19  143
38022   9516    5   177
39003   9516    5   177
39056   9516    5   177
40016   9516    5   177
47011   9516    5   177
46006   9514    16  176
47007   9514    16  176
47009   9514    16  176
47011   9514    16  176
58008   9514    16  176
59001   9514    16  176
59002   9514    16  176
60004   9514    16  176
60006   9514    16  176
61001   9514    16  176
61002   9514    16  176
61003   9514    16  176
65005   9514    16  176
81002   9514    16  176
81003   9514    16  176
82003   9514    16  176
41006   9512    1   163
65005   9510    1   164
40003   9509    9   165
40011   9509    9   165
40012   9509    9   165
47004   9509    9   165
47009   9509    9   165
48010   9509    9   165
60004   9509    9   165
62001   9509    9   165
66006   9509    9   165', header = TRUE)
我只需要在剩下的列中用缺少的
colB
观察值(每个缺少一个)和NAs来填充
df

在这种情况下,my
colB
colB的范围从
colB
=9509到
colB
=9520,此范围内缺少的观测值为
colB
=9519、9515、9513和9511

以下是我的预期输出:

colA    colB  colC  colD
74001   9520    2   56
74006   9520    2   56
NA      9519    NA  NA
33021   9518    3   99
33024   9518    3   99
37001   9518    3   99
33014   9517    19  143
33023   9517    19  143
33050   9517    19  143
34005   9517    19  143
34006   9517    19  143
37006   9517    19  143
38001   9517    19  143
38020   9517    19  143
38021   9517    19  143
39005   9517    19  143
39093   9517    19  143
40004   9517    19  143
40012   9517    19  143
41005   9517    19  143
41006   9517    19  143
41012   9517    19  143
41014   9517    19  143
41020   9517    19  143
41022   9517    19  143
38022   9516    5   177
39003   9516    5   177
39056   9516    5   177
40016   9516    5   177
47011   9516    5   177
NA      9515    NA  NA
46006   9514    16  176
47007   9514    16  176
47009   9514    16  176
47011   9514    16  176
58008   9514    16  176
59001   9514    16  176
59002   9514    16  176
60004   9514    16  176
60006   9514    16  176
61001   9514    16  176
61002   9514    16  176
61003   9514    16  176
65005   9514    16  176
81002   9514    16  176
81003   9514    16  176
82003   9514    16  176
NA      9513    NA  NA
41006   9512    1   163
NA      9511    NA  NA
65005   9510    1   164
40003   9509    9   165
40011   9509    9   165
40012   9509    9   165
47004   9509    9   165
47009   9509    9   165
48010   9509    9   165
60004   9509    9   165
62001   9509    9   165
66006   9509    9   165
任何帮助都将不胜感激


谢谢

这对你的工作应该有用

library(zoo)

df$Day<-as.POSIXct(df$Day,format="%m/%d/%y", origin = "1960-01-01")
df.z<-zoo(df[,-1],df$Day) #Day as Index 

df.final <- merge(df.z,zoo(,seq(start(df.z),end(df.z),by="min")), all=TRUE)
图书馆(动物园)

df$Day这对你的工作应该有用

library(zoo)

df$Day<-as.POSIXct(df$Day,format="%m/%d/%y", origin = "1960-01-01")
df.z<-zoo(df[,-1],df$Day) #Day as Index 

df.final <- merge(df.z,zoo(,seq(start(df.z),end(df.z),by="min")), all=TRUE)
图书馆(动物园)
df$Day您只需执行以下操作:

# create a vector with all the missing days
missing <- setdiff(max(df$Day):min(df$Day),df$Day)
# append the missing rows to the end of df data.frame (creating a new one)
df2 <- rbind(df,data.frame(colA=NA,Day=missing,colC=NA,colD=NA))
# sort the rows by Day
df2 <- df2[order(df2$Day),]
您可以简单地执行以下操作:

# create a vector with all the missing days
missing <- setdiff(max(df$Day):min(df$Day),df$Day)
# append the missing rows to the end of df data.frame (creating a new one)
df2 <- rbind(df,data.frame(colA=NA,Day=missing,colC=NA,colD=NA))
# sort the rows by Day
df2 <- df2[order(df2$Day),]

嗨,谢谢。很抱歉,我在as.POSIXct.numeric(ciao$Day,format=“%m/%d/%y”):“origin”必须被提供我认为是因为我的Day列实际上不是一个日期,而只是一个整数。@aaaaaa我知道,正在尝试复制您的错误。正在处理,将在工作时通知您。嗨,谢谢。很抱歉,我在as.POSIXct.numeric(ciao$Day,format=“%m/%d/%y”):“origin”必须被提供我认为是因为我的Day列实际上不是一个日期,而只是一个整数。@aaaaaa我知道,正在尝试复制您的错误。正在处理它,将在它工作时通知您。