0

「X」( 0〜80の値)と「Y」(0〜80の値)データセットがあります。新しい列「テーブル」を作成したいと思います。私は36のテーブルを念頭に置いています:6つのグループで...それらは次のようにグループ化する必要があります:

  • 表1-6:すべてY 11-20 ...表7-12:Y 21-30、表13-18:Y 31-40、表19-24:Y 41-50、表25-30:Y 51 -60、表31-36:Y 61-70
  • 表1:X 21-30および表7、13、19、25、31
  • 表2:X 31-40および表8、14、20、26、32
  • 表3:X 41-50および表9、15、21、27、33
  • 表4:X 51-60および表10、16、22、28、34
  • 表5:X 61-70および表11、17、23、29、35
  • 表6:X 71-80および表12、18、24、30、36

最終結果:

X   Y   Table
45  13    3
66  59    29
21  70    31
17  66    NA (there is no table for X lower than 21)

If Else関数を使用して、「X」と「Y」のデータを1から36などの範囲の新しい「テーブル」にグループ化する必要がありますか?どんな助けでもありがたいです!ありがとうございました!

ヘッド(データ)

    value avg.temp  X  Y
1      0     6.69   45 13
2      0     6.01   48 14
3      0     7.35   39 15
4      0     5.86   45 15
5      0     6.43   42 16
6      0     5.68   48 16
4

2 に答える 2

0

このようなものが使えると思います。データフレームが呼び出された場合df

df$Table <- NA
df$Table[df$X>=21 & df$X<=30 & df$Y>=11 & df$Y<=20] <- 1
df$Table[df$X>=31 & df$X<=40 & df$Y>=11 & df$Y<=20] <- 2
...
于 2013-02-25T12:30:57.667 に答える
0

数学とインデックスを使用する:

# demo data
x <- data.frame(X = c(45,66,21,17,0,1,21,80,45),Y = c(13,59,70,66,80,11,0,1,27))

# if each GROUP of Y tables was numbered 1-6, aka indexing
x$ytableindex <- ((x$Y-1) - (x$Y-1) %% 10) / 10

# NA if too low
x$ytableindex[x$ytableindex < 1] <- NA

# find lowest table based on Y index
x$ytable <- (0:5*6+1)[x$ytableindex]

# find difference from lowest Y table to arrive at correct table using X
x$xdiff <- floor((x$X - 1) / 10 - 2)

# NA if too low
x$xdiff[x$xdiff < 0] <- NA

# use difference to calculate the correct table, NA's stay NA
x$Table <- x$ytable + x$xdiff
于 2015-02-20T09:01:11.320 に答える