Извлечь значения из фрейма данных в R - PullRequest
0 голосов
/ 09 августа 2010

Используя R, я хотел бы выяснить, какие сэмплы (S1, S2, S3, S4, S5) соответствуют следующим критериям: содержат как минимум одно значение (x, y или z) больше 4. Спасибо, Алекс.

 Sample    x    y    z <br>
     S1 -0.3  5.3  2.5 <br>
     S2  0.4  0.2 -1.2 <br>
     S3  1.2 -0.6  3.2 <br>
     S4  4.3  0.7  5.7 <br>
     S5  2.4  4.3  2.3 <br>

Ответы [ 3 ]

1 голос
/ 09 августа 2010

Вы можете попробовать позвонить на apply - например:

> apply(dataFrameOfSamples,1,function(x)any(x > 4))
   S1    S2    S3    S4    S5
 TRUE FALSE FALSE  TRUE  TRUE
0 голосов
/ 09 августа 2010

Со многими строками это может быть более эффективным:

do.call(pmax, X[c("x","y","z")]) > 4

По вашим данным

ex <- data.frame(
  Sample = c("S1", "S2", "S3", "S4", "S5"),
  x = c(-0.3, 0.4, 1.2, 4.3, 2.4),
  y = c( 5.3, 0.2,-0.6, 0.7, 4.3),
  z = c( 2.5,-1.2, 3.2, 5.7, 2.3)
)

do.call(pmax, ex[c("x","y","z")]) > 4
# [1]  TRUE FALSE FALSE  TRUE  TRUE
0 голосов
/ 09 августа 2010

Как это звучит?Скопируйте свои данные в буфер обмена и выполните следующие команды:

dta <- read.table("clipboard", header = T)
apply(dta[2:4], 1, function(x) ifelse(max(x) >= 4, 1, 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...