2017-02-19 10 views
0

У меня есть данные, собранные из опроса. Файл csv выглядит примерно так.Велоспорт через колонны в R

1c x x 1e x x 2c x x 2e x x 

D x x D x x R x x R x x 

R x x R x x D x x D x x 

D x x D x x R x x R x x 

R x x R x x R x x R x x 

и т.д., и т.д ...

Рентгеновские Изобразят другие данные, которые не используются в данном анализе.

Ответы от 1c и 1e (или любых парных столбцов) должны быть одинаковыми. Это было сделано как проверка манипуляции, чтобы проверить, обращают внимание участники. Я хочу подсчитать количество «D» s и количество «R» s, но если парные столбцы не совпадают, они не подсчитываются.

Прямо сейчас я делаю что-то вроде этого:

final <- read("data.csv") 


    for(i in 1:length(rownames(final))){ 
     if(final$X1c[i] == final$X1e[i]){ 
     count <- append(count, as.character(final$X1c[i])) 
     } 
    } 
    for(i in 1:length(rownames(final))){ 
     if(final$X2c[i] == final$X2e[i]){ 
     count <- append(count, as.character(final$X2c[i])) 
     } 
    } 

и дальше и дальше и дальше.

Как это сделать, чтобы у меня не было отдельного цикла для каждого вопроса?

ответ

0

Вы можете просто иметь два различных счетчиков в петлях, чтобы захватить оба счетчика (или сколько НУ есть):

final <- read("data.csv") 


    for(i in 1:length(rownames(final))){ 
     if(final$X1c[i] == final$X1e[i]){ 
     count <- append(count, as.character(final$X1c[i])) 
     if(final$X2c[i] == final$X2e[i]){ 
     count2 <- append(count2, as.character(final$X2c[i])) 
     } 
     } 

Но я хотел бы создать исходную таблицу или переменные вне контура для count & count2 ,

Если у вас есть мегатонна переменных, вы можете создать список, таблицу или какой-либо другой вектор пар для отправки во вложенный цикл для итерации по парам столбцов, которые нужно сравнить.

Однако, если все, что вас интересует получение, - это общее количество раз d == d в паре столбцов с несколькими наборами столбцов и возможных факторов в каждой паре столбцов, вы можете рассмотреть возможность использования пакета dplyr.

Если вы используете group_by собрать два столбца, а затем использовать summarize() с некоторой логикой и filter вытащить эквивалентные пары с каждым набором значений, можно создавать таблицы подсчетов, где они являются одинаковыми.

здесь хорошая ссылка, используя dplyr таким образом:

dplyr tutorial using mtcars dataset