如何创建列以指示r

时间:2015-12-30 22:01:02

标签: r

enter image description here

我想根据先前的燃料数据创建一个新列来指示燃料类型,但我不知道如何做到这一点。请帮助!感谢

1 个答案:

答案 0 :(得分:1)

首先,请查看上述评论中提供的有关如何在此处提出良好问题的资源。设置一个好问题有时会很痛苦,但这对于快速有效地回答你的问题确实有很长的路要走。

除此之外,这里有一个我认为你要求的东西。

首先,让我们创建一个简单,可重现的数据集(即任何人都可以运行此代码来创建相同的数据集,这意味着我们都从同一点开始):

df <- data.frame( fuel12 = c(100,0,0,100,0)
                , fuel34 = c(0,100,0,100,0)
                , fuel56 = c(0,0,100,0,0)
                )
#     fuel12 fuel34 fuel56
# 1    100      0      0
# 2      0    100      0
# 3      0      0    100
# 4    100    100      0
# 5      0      0      0

接下来,我们将使用applydf列中查找任何非零值。如果没有非零值,则该列将显示None。我不确定是否有多个非零列,但以防我们列出所有非零列并用逗号分隔(例如fuel12,fuel34)。

df$which_fuel <- apply(df, 1, function(x) { ifelse(sum(x)==0
                                                  , "None"
                                                  , paste(names(df)[x > 0], collapse=",")
                                                  )})
df
#   fuel12 fuel34 fuel56    which_fuel
# 1    100      0      0        fuel12
# 2      0    100      0        fuel34
# 3      0      0    100        fuel56
# 4    100    100      0 fuel12,fuel34
# 5      0      0      0          None

这是你在找什么?