2013-07-17 31 views
0

我有以下數據,並希望將它們中的每一個都計算在另一列中。列表中的行字符

輸入:

col1 col2 col3 col4 
A a  a  a  a 
B a  c  c  c 
C a  b  b  c 
D a  -  b  c 
E b  -  b  c 

所以輸出看起來是這樣的:

col1 col2 col3 col4 count 
A a  a  a  a  a 
B a  c  c  c  a,c 
C a  b  b  c  a,b,c 
D a  -  b  c  a,b,c,- 
E b  -  b  c  b,c,- 

回答

3

一種解決方案是使用apply

dt$count <- apply(dt,1,function(x)I(unique(x))) 
    col1 col2 col3 col4  count 
A a a a a   a 
B a c c c  a, c 
C a b b c a, b, c 
D a - b c a, -, b, c 
E b - b c b, -, c 

也許更好的輸出,如果你解決你的結果,但是,不完全是所需的:

dt$count <- apply(dt,1,function(x)I(sort(unique(x)))) 

col1 col2 col3 col4  count 
A a a a a   a 
B a c c c  a, c 
C a b b c a, b, c 
D a - b c -, a, b, c 
E b - b c -, b, c 
+1

+1好用'I' – mnel

+0

如果我只需要提取每一行出現的最高頻率,該怎麼辦? – user2247503

+2

@ user2247503 - 我們應該如何從你的問題中猜測出來?你的例子不這樣做! – mnel

相關問題