2016-01-12 32 views
0

我有一个类似于数据:填充数据下降到下一行

Alabama Age>50 Value1 Value2 Value3 
     Age<50 Value1 Value2 Value3 
Alaska Age>50 Value1 Value2 Value3 
     Age<50 Value1 Value2 Value3 

我只需要保持数据Age<50。我如何重复状态名称到它下面的行?我创建了一个状态名称的字符串,但我不确定如何将它插入到第一列中的每一行中。

data.frame头是:

d <- structure(c("ALABAMA", "", "ALASKA", "", "ARIZONA", "", "Under 18", 
     "Total all ages", "Under 18", "Total all ages", "Under 18", "Total all ages", 
     "0", "1", "10", "87", "46", "303", "0", "0", "0", "36", "6", "855", "84,843", 
     "", "469,145", "", "6,303,555", ""), .Dim = c(6L, 5L), .Dimnames = list(NULL, 
     c("State", "", "Rape3", "Prostitution and\ncommercialized\nvice", 
     "2014\nestimated \npopulation"))) 
+0

参见[这里](http://stackoverflow.com/questions/14843887/in-r-merge-two-data-frames-fill-down-the-blanks)填补空白。试试像这样过滤'df < - df [df $ age_column =='Age> 50“,]'其中df是一个数据框。 – Mist

+0

你的数据是什么类型的对象还不是很清楚。你可以发布'dput(head(yourdata))'的结果吗? – Molx

+0

结果: 结构(c“ALABAMA”,“”,“ALASKA”,“”,“ARIZONA”,“”,“未满18岁”, “所有年龄的人共计”,“未满18岁”,“总计全部“18岁以下”,“所有年龄的人共计”, “0”,“1”,“10”,“87”,“46”,“303”,“0”,“0”,“ ,“36”,“6”, “855”,“84,843”,“”,“469,145”,“”,“6,303,555”,“”),.Dim = c(6L, 5L),.Dimnames = list(NULL,c(“State”,“”,“Rape3”,“Prostitution and \ ncommercialized \ nvice”, “2014 \ nestimated \ npopulation”))) – Tom

回答

0

假如你有一个列标题年龄

假设你的数据被称为MyDataFrame

您可以使用,例如:

# Load required package zoo 
if(library("zoo", logical.return=TRUE, quietly=TRUE, warn.conflicts = FALSE)==FALSE){ 
    install.packages("zoo") 
} else{require("zoo") } 

MyDataFrame$Age<-na.locf(MyDataFrame$Age, na.rm=FALSE) 

希望它有帮助。

+0

这似乎没有回答这个问题(或者至少是我对它的理解)。 OP想要填写状态名称。 – jbaums

+0

哦,我明白了。您是否从包动物园看na.locf()? –

+0

注意:你可以用'if(!require(zoo))'替换所有'库'东西。 – jbaums

0

这个怎么样:

df <- as.data.frame(structure(c("ALABAMA", "", "ALASKA", "", "ARIZONA", "", "Under 18", "Total all ages", "Under 18", "Total all ages", "Under 18", "Total all ages", "0", "1", "10", "87", "46", "303", "0", "0", "0", "36", "6", "855", "84,843", "", "469,145", "", "6,303,555", ""), .Dim = c(6L, 5L), .Dimnames = list(NULL, c("State", "", "Rape3", "Prostitution and\ncommercialized\nvice", "2014\nestimated \npopulation"))), stringsAsFactors = FALSE) 
names(df)[5] <- "est_pop" 
df$est_pop[df$est_pop == ""] <- NA 
df$State[df$State == ""] <- NA 

library(zoo) 

df$State <- na.locf(df$State,na.rm = TRUE) 
df$est_pop <- na.locf(df$est_pop,na.rm = TRUE) 
df <- df[df$V2 == "Total all ages" , ]