2014-02-02 3 views
-1

Я новичок в R и пытается выполнить следующие действия:R, проверить класс вектора

Для каждого уникального значения в столбце 2, определить долю соответствующих значений в колонке 1, равных е , Например, x является уникальным значением в столбце 2 и появляется 10 раз. Из 10 случаев имеется 6, где соответствующее значение в столбце 1 равно e, поэтому значение, возвращаемое для x, должно быть 0,6. Следующий код должен проверить b, s, а затем f т.д.

Col 1 Col 2 
p x 
e x 
e b 
p x 
e x 
e x 
e b 
e b 
p x 
e b 
e x 
e x 
e b 
p x 
e x 
e s 
e f 

Моя попытка ниже:

# figure out how many unique values there are in column 2 
n_unique <- 1:(nunique (data[,2])) 

# Assign the unique values to a vector, and then run my desired calculation 
my_calc <- function(x){ 

unique_val <- data[,2] 

if(data[,2] = unique_val[x]){ 
    result <- ("count occurrences of e"/"total occurrences") 
} else { 
return (NA) 
} 

# loop "my_calc" for each unique value in column 2 
sapply(n_unique, my_calc) 
+0

Ваше описание не очень ясное. Не могли бы вы найти функцию 'table'? Вам нужно будет предоставить пример ввода и вывода, чтобы увеличить вероятность получения более подробных рекомендаций. – Roland

ответ

0

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

prop.table(table(dat), 2) 

    Col2 
Col1 b f s x 
    e 1.0 1.0 1.0 0.6 
    p 0.0 0.0 0.0 0.4 

где dat это имя вашего фрейма данных. В каждом столбце результата значения равны единице.

Смежные вопросы