2016-06-07 45 views
1

列索引I有如下的數據:與逐行最大值

Newspaper Month Year   Date  Topic1  Topic2  Topic3  Topic4  Topic5 
1 Scotsman December 2005 December 2005 0.013749700 0.000127470 0.38575261 0.000127470 0.070778523 
2 Scotsman December 2005 December 2005 0.000165017 0.000165017 0.05219433 0.004611941 0.000165017 
3 Scotsman December 2005 December 2005 0.000356507 0.024344932 0.01135670 0.000356507 0.000356507 
4 Scotsman December 2005 December 2005 0.000185186 0.000185186 0.10796924 0.044639345 0.106613401 
5 Scotsman December 2005 December 2005 0.065869506 0.009775978 0.09610254 0.017584819 0.000103681 
6 Scotsman December 2005 December 2005 0.000153257 0.000153257 0.11443001 0.000153257 0.046316677 

我想創建對應於所述帶TopicN較高百分比的獨立變量。

在第一篇文章(行)的情況下,它會是3.任何想法?

+0

如何爲您的數據表現在存儲,是一個數組,一個數據庫嗎? –

回答

7

您可以在主題列上使用max.col()。如果df是數據,嘗試

max.col(df[grepl("^Topic", names(df))]) 
# [1] 3 3 2 3 3 3 

所以要添加新列MaxPct,我們可以做

​​
+0

嘿@Richard Scriven,很好的答案,它應該表示感謝。我得到以下錯誤:類型'closure'的對象不是子集。任何想法爲什麼?乾杯! –

+0

可能是因爲你的數據沒有被命名爲'df'? 'df'也是一個基本的R函數。只需在上面我的代碼中插入數據名稱,即可以看到「df」。 –

+1

這是一個多麼愚蠢的問題,我改變了變量的名稱,但不是在主體中的DF。乾杯! –

4

我們可以使用applywhich.max

unname(apply(df[grepl("^Topic", names(df))], 1, which.max)) 
#[1] 3 3 2 3 3 3