2010-08-09 3 views
0

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

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> 

ответ

1

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

> apply(dataFrameOfSamples,1,function(x)any(x > 4)) 
    S1 S2 S3 S4 S5 
TRUE FALSE FALSE TRUE TRUE 
+0

... считая, что Sample является именем кадра данных или матрицы, а не только столбцом упомянутого кадра данных. – John

0

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

dta <- read.table("clipboard", header = T) 
apply(dta[2:4], 1, function(x) ifelse(max(x) >= 4, 1, 0)) 
0

С большим количеством строк, это может быть более эффективным:

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 
Смежные вопросы