2016-09-18 3 views
0

1列を3列に分割したい。ここで値の異なる列を分割する

rooms       location   Street Suburb City price m2 
1  2   examplestreet 3, munich    <NA>  <NA> munich 500000 40 
2  3     suburg2, berlin    <NA> suburg2 berlin 300000 60 
3  5 examplestreet 45, suburb1, munich examplestreet 45 suburb1 munich 350000 55 

は私がやったことです:

問題は、それが、時には3つの値をcontaints、時には2

出力は次のようになります「」私は区切り文字で列を分割した場合ということです

> rooms = c(2, 3, 5) 
> location = c("examplestraße 3, munich", "suburb2, berlin", "examplestaße 45, suburb1, munich") 
> price = c(500000, 300000, 350000) 
> m2 = c(40, 60, 55) 
> 
> dataexample = data.frame(rooms, location, price, m2) 
> dataexample 
    rooms       location price m2 
1  2   examplestraße 3, munich 500000 40 
2  3     suburb2, berlin 300000 60 
3  5 examplestaße 45, suburb1, munich 350000 55 
> rooms = c(2, 3, 5) 
> location = c("munich", "suburb2, berlin", "examplestaße 45, suburb1, munich") 
> price = c(500000, 300000, 350000) 
> m2 = c(40, 60, 55) 
> 
> dataexample = data.frame(rooms, location, price, m2) 
> 
> library(tidyr) 
> separate(dataexample, location, into=c('Street', 'Suburb', "City"), remove=FALSE, sep = ",") 
    rooms       location   Street Suburb City price m2 
1  2       munich   munich  <NA> <NA> 500000 40 
2  3     suburb2, berlin   suburb2 berlin <NA> 300000 60 
3  5 examplestaße 45, suburb1, munich examplestaße 45 suburb1 munich 350000 55 
Warning message: 
Too few values at 2 locations: 1, 2 

答えて

0
また、デリミタ( ,)、いくつかの要素を有する list要素のためのNAを有するパッド、 list rbindによって「位置」列を分割することにより base Rでこれを行うことができ

元のデータセットを持つcbind

lst <- strsplit(as.character(dataexample$location), ", ") 
cbind(dataexample, `colnames<-`(do.call(rbind, lapply(lapply(lst, 
     `length<-`, max(lengths(lst))), 
     function(x) c(x[is.na(x)], x[!is.na(x)]))), c('Street', 'Suburb', "City"))) 
# rooms       location price m2   Street Suburb City 
#1  2       munich 500000 40   <NA> <NA> munich 
#2  3     suburb2, berlin 300000 60   <NA> suburb2 berlin 
#3  5 examplestaße 45, suburb1, munich 350000 55 examplestaße 45 suburb1 munich 
関連する問題