dat
次の形式のデータフレームがあるとします。
property_id tenant count
1 1 Burlington Coat Factory 1
2 1 Macy's 2
3 1 Sears 3
4 1 AMC Theatres 4
5 1 Macy's Home 5
6 2 Burlington Coat Factory 1
7 2 JCPenney 2
8 2 Value City 3
どうすれば次のものを生み出すことができますか?
property_id X1 X2 X3 X4 X5
1 Burlington Coat Factory Macy's Sears AMC Theatres Macy's Home
2 Burlington Coat Factory JCPenney Value City <NA> <NA>
溶融/再形成は、巨大でほとんどまばらなマトリックスを生成するようです。
私は非常に面倒なことに次のものを使用しましたが、それはひどいので、より良い方法については空白にしています:
df<-data.frame(matrix(NA,1167,20))
df['id']<-unique(dat$property_id)
for(i in seq(1:dim(df)[1])){
df[i,1:length(subset(dat,dat$property_id==df[i,'id'])$tenant)]<-t(subset(dat,dat$property_id==df[i,'id'])$tenant)
}
spread
あなたが必要なものを正確に与えるようです:
library(tidyverse)
spread(dat, count, tenant)
# A tibble: 2 x 6
# property_id `1` `2` `3` `4` `5`
# <dbl> <chr> <chr> <chr> <chr> <chr>
# 1 1 Burlington Coat Factory Macy's Sears AMC Theatres Macy's Home
# 2 2 Burlington Coat Factory JCPenney Value City NA NA
別のオプション:
library(reshape2)
dcast(dat, property_id ~ count, value.var = "tenant")
# property_id 1 2 3 4 5
# 1 1 Burlington Coat Factory Macy's Sears AMC Theatres Macy's Home
# 2 2 Burlington Coat Factory JCPenney Value City <NA> <NA>
そして最後に:
reshape(dat, v.names = "tenant", idvar = "property_id", timevar = "count", direction = "wide")
# property_id tenant.1 tenant.2 tenant.3 tenant.4 tenant.5
# 1 1 Burlington Coat Factory Macy's Sears AMC Theatres Macy's Home
# 6 2 Burlington Coat Factory JCPenney Value City <NA> <NA>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加