2016-11-22 3 views
0

У меня есть dataframe следующимподсчета частоты значений в R

DATA <- read.table(text = "col1 col2 
    ATG AT 
    NA AT1 
    ATC AT2 
    ATD AT3 
    ATE AT3 
    ATF AT4 
    ATH AT4 
    ATI AT4 
    ATL AT4", header=TRUE) 

Я использовал

result<-data.frame(table(DATA$col2)) 

, чтобы получить то, что я хотел

##result 
    col1 col2 
    1  AT 
    1  AT1 
    1  AT2 
    2  AT3 
    4  AT4 

Проблема заключается вторая строка col1 имеет значение NA и должен считаться нулем, но я не могу этого сделать. Он должен быть

 ##result 
    col1 col2 
    1  AT 
    0  AT1 
    1  AT2 
    2  AT3 
    4  AT4 
+2

'результат <-data.frame (таблица (данные $ col2 [is.na (данные $ col1) ])) ' – Barker

+0

Мне нужно, чтобы значения NA считались нулями и не устраняли их, как я показал в ожидаемом результате для дальнейших вычислений. – Paul

+0

@Paul, если вы запустите код Barker, он дает ваш ожидаемый результат, включая строку '0' ... – Gregor

ответ

2
dfs = read.table(text = 
"col1 col2 
ATG AT 
NA AT1 
ATC AT2 
ATD AT3 
ATE AT3 
ATF AT4 
ATH AT4 
ATI AT4 
ATL AT4", sep = " ", header = TRUE) 

data.frame(xtabs(!is.na(col1) ~ col2, data = dfs)) 
0

Как насчет изменения кода немного:

result<-data.frame(table(DATA[!is.na(DATA$col1),]$col2)) 
result 

    Var1 Freq 
1 AT 1 
2 AT1 0 
3 AT2 1 
4 AT3 2 
5 AT4 4 
Смежные вопросы