2016-06-07 60 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