2016-01-12 3 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 («ALABKA», «« ALASKA »,« »,« ARIZONA »,« »,« Under 18 », « Всего всех возрастов »,« Менее 18 лет »,« Всего всего «0», «0», «10», «87», «46», «303», «0», «0», «0», «0», «0», «0», «0», «0», «0», «0», , "36", "6", "855", "84,843", "", "469,145", "", "6,303,555", ""), .Dim = c (6L, 5L), .Dimnames = (NULL, c («State», «», «Rape3», «Проституция и \ ncommercialized \ nvice», «2014 \ nnimimated \ 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

Боковое примечание: вы можете заменить все, что 'library' на' 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" , ] 
Смежные вопросы