2015-04-01 3 views
0

Есть данные, как эта таблица:выбрать конкретные переменную г

v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 

4 0 0 2 0 0 0 0 0 0 0 0 0 0 0 

1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 

2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 

1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 

2 0 0 3 0 0 0 0 0 0 0 0 0 0 0 

, и я хотел бы сделать новую матрицу с конкретными переменными столбцами, которые имеют числовое значение, отличное от нуля (в данном случае конкретного переменными столбцами являются v1 и v4).

Я знаю функцию подмножества, но я не могу найти способ выбора условных столбцов с помощью выражения «if».

Я имею в виду ... как я могу создать матрицу с конкретными столбцами, которые имеют числовое значение, отличное от нуля, с помощью выражения «if»?

Пожалуйста, помогите мне решить мою проблему.

Спасибо.

ответ

0

Вы не указали, в каком формате находятся ваши данные, но если у вас есть матрица или data.frame, вы должны использовать R extract operator ([), чтобы указать только нужные столбцы. Вы можете передать ему вектор логических значений (TRUE или FALSE) для этой спецификации, поэтому все, что вам нужно, это функция, которая вернет вам нужные логические значения.

В качестве простого примера с матрицей, можно применить функцию, видя, если есть какие-либо ненулевые значения по каждому из столбцов матрицы:

> a 
    [,1] [,2] [,3] [,4] 
[1,] 0 1 0 4 
[2,] 0 2 0 5 
[3,] 0 3 0 6 

> a[, apply(a, 2, function(x) { return(any(x != 0)) })] 
    [,1] [,2] 
[1,] 1 4 
[2,] 2 5 
[3,] 3 6 

Этот же механизм экстракт работает над данными. также:

> a 
    V1 V2 V3 V4 
1 0 1 0 4 
2 0 2 0 5 
3 0 3 0 6 
> a[, sapply(a, function(x) { return(any(x != 0)) })] 
    V2 V4 
1 1 4 
2 2 5 
3 3 6 
Смежные вопросы