2017-10-21 8 views
0

列の値に応じて副データフレームにデータフレームは、I列Millage(MPG)分割Iは300列のデータフレームを有する

     Model    MPG  Origin 
1    chevrolet chevelle malibu 18.0  US 
2      buick skylark 320 15.0  US 
3      plymouth satellite 18.0  US 
4       amc rebel sst 16.0  US 
5       ford torino 17.0  US 
6      ford galaxie 500 15.0  US 
7      chevrolet impala 14.0  US 
8      plymouth fury iii 14.0  US 
9      pontiac catalina 14.0  US 
10     amc ambassador dpl 15.0  US 
11     dodge challenger se 15.0  US 

の値に応じて、データフレームを分割します私はそのようなデータフレームを分割したい。

私はMPGの14未満、14-17とデータフレームを持って、より大きな17

yは私は上記の指定された値で、低、中、高のデータセットに分割したい私の親データセットであります。

私はループのために13.6より小さい値を付加して、その行列をlowという別のデータフレームに挿入しようとしていました。アプローチは正しいですか、私はそれが簡単に希望のサブデータフレームにデータフレームを分割するようになります。この正確な目的のために使用することができますRのいずれかの機能がある場合

for(i in 1:nrow(y)){ 
    if(y[i,2] <13.6){ 
    low_arrayMPG.append(y[i,2]) 
    low_arrayModel.append(y[i,1]) 
    low_arrayOrigin.append(y[i,3]) 

    } 

} 

誰も私を助けてもらえますか?

答えて

3

我々はsplitティンlistdata.frameのS

lst <- split(df1, findInterval(df1$MPG, c(14, 17), rightmost.closed = TRUE)) 
へのデータセットのグループ化変数を作成するために findIntervalを使用することができます
3

私は次のようにあなたは自分のデータフレーム(df)のサブセットすることができると思う:

df_low <- df[df$MPR < 14, ] 
df_medium <- df[df$MPR >= 14 & df$MPR <= 17, ] 
df_high <- df[df$MPR > 17, ] 
0

あなたはまたこれらが好きでしょう:

split(df1,(df1$MPG>=14)+(df1$MPG>17)) 
# $`1` 
# Model MPG Origin 
# 2   buick skylark 320 15  US 
# 4    amc rebel sst 16  US 
# 5    ford torino 17  US 
# 6   ford galaxie 500 15  US 
# 7   chevrolet impala 14  US 
# 8   plymouth fury iii 14  US 
# 9   pontiac catalina 14  US 
# 10  amc ambassador dpl 15  US 
# 11  dodge challenger se 15  US 
# 
# $`2` 
# Model MPG Origin 
# 1 chevrolet chevelle malibu 18  US 
# 3  plymouth satellite 18  US 


library(dplyr) 
library(tidyr) 
df1 %>% group_by(spl = (MPG>=14) + (MPG>17)) %>% nest 
# # A tibble: 2 x 2 
#  spl    data 
#  <int>   <list> 
# 1  2 <tibble [2 x 3]> 
# 2  1 <tibble [9 x 3]> 

データ

df1 <- read.table(text="      Model    MPG  Origin 
      1    'chevrolet chevelle malibu' 18.0  US 
        2    '  buick skylark 320' 15.0  US 
        3    '  plymouth satellite' 18.0  US 
        4    '   amc rebel sst' 16.0  US 
        5    '    ford torino' 17.0  US 
        6    '   ford galaxie 500' 15.0  US 
        7    '   chevrolet impala' 14.0  US 
        8    '  plymouth fury iii' 14.0  US 
        9    '   pontiac catalina' 14.0  US 
        10    '  amc ambassador dpl' 15.0  US 
        11    '  dodge challenger se' 15.0  US",header=T,stringsAsFactors=F) 
関連する問題