2017-10-23 20 views
1

変数(df$pet)の値に基づいて、dfdogCorrect、データフレームを新しいデータフレームに分割するときの名前付け

私の現在のコードの問題は、新しいデータフレームの名前を取得できないことです。私はunique(df$pet)を使用しています。これはペットの最初のユニークな要素を取り、それを新しいデータフレームの内容に関係なく最初の新しいデータフレームに割り当てます。

ご協力いただきありがとうございます。

出発点:

df <- data.frame(pet=c("dog","dog","dog","cat","cat","rat","rat","rat","rat"),relstatus=c(1,2,1,2,2,2,2,1,2),age=c(34,54,56,32,45,64,65,32,45), stringsAsFactors = FALSE) 

望ましい結果:

dfdogCorrect <- data.frame(pet=c("dog","dog","dog"),relstatus=c(1,2,1),age=c(34,54,56), stringsAsFactors = FALSE) 
dfcatCorrect <- data.frame(pet=c("cat","cat"),relstatus=c(2,2),age=c(32,45), stringsAsFactors = FALSE) 
dfratCorrect <- data.frame(pet=c("rat","rat","rat","rat"),relstatus=c(2,2,1,2),age=c(64,65,32,45), stringsAsFactors = FALSE) 

現在のコード:

s <- setNames(split(df, df$pet), paste0("df", unique(df$pet))) 
list2env(s, globalenv()) 

答えて

6

あなたはsplit()f引数でそれらを作成することにより、自動的にリスト名を設定することができます。 list2env()行は追加しません。なぜなら、同様のデータをグローバル環境に散布するのではなく、リストに残す方が良いと思うからです。

split(df, paste0("df", df$pet, "Correct")) 
# $dfcatCorrect 
# pet relstatus age 
# 4 cat   2 32 
# 5 cat   2 45 
# 
# $dfdogCorrect 
# pet relstatus age 
# 1 dog   1 34 
# 2 dog   2 54 
# 3 dog   1 56 
# 
# $dfratCorrect 
# pet relstatus age 
# 6 rat   2 64 
# 7 rat   2 65 
# 8 rat   1 32 
# 9 rat   2 45 
関連する問題