2014-01-26 3 views
1

Я новенький R и пытаю дихотомизации третьего измерения (10x10) следующий набор данных:Как дихотомизация набора данных в R

http://www.stat.washington.edu/~hoff/courses/567/Data/monks

Похоже, что я должен быть возможность запускать две петли для строк и столбцов, как это, но не работает:

для (к в 1:10) {заменить (к, 1, к> 1 = 1)}

Это мой второй день, пытаясь выяснить R, без фона, за исключением littl e STATA. Любые предложения ОЧЕНЬ оценены :)

+6

Это похоже на домашнее задание. Это может помочь нам помочь вам, если вы можете сказать немного больше о том, что вы понимаете под «дихотомизацией». Какой результат вы ожидаете? http://www.stat.washington.edu/~hoff/courses/567/Homework/hw2.pdf – Amanda

+0

Ha! Хорошо! – jlhoward

ответ

1

Поскольку данные представляют собой массив, я использовал бы его до data.frame перед использованием функции. Я не уверен, что это формат вывода, который вы хотели бы в конце.

# Coerce to a `data.frame` 
df <- as.data.frame(my_data) 

# Apply a function to the columns that makes the variables binary (meaning if they are positive, its a 1, else # a 0). This is what `ifesle` does. For more info read: ?ifelse 

res = apply(df, 2, function(x) ifelse(x > 0, 1, 0)) 
     ROMUL.like1 BONAVEN.like1 AMBROSE.like1 BERTH.like1 PETER.like1 LOUIS.like1 VICTOR.like1 
ROMUL    0    0    1   0   1   0   0 
BONAVEN   1    0    0   0   0   0   1 
AMBROSE   1    1    0   0   0   0   0 
BERTH    0    0    0   0   1   1   0 
PETER    0    0    0   1   0   0   0 
LOUIS    1    0    0   1   0   0   0 
Смежные вопросы