根据其他值添加列

dat*_*oda 4 r

我有一个包含数百万行和三列标记为关键字,展示次数,点击次数的数据框.我想根据此函数的评估添加一个包含值的列:

isType <- function(Impressions, Clicks)
{ 
if (Impressions >= 1 & Clicks >= 1){return("HasClicks")} else if (Impressions >=1 & Clicks == 0){return("NoClicks")} else {return("ZeroImp")}
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.然后我尝试这个来创建列,但1)它需要永远和2)它标记所有行有"HasClicks"甚至是它不应该的那些.

# Creates a dataframe
Type <- data.frame()
# Loops until last row and store it in data.frame
for (i in c(1:dim(Mydf)[1])) {Type <- rbind(Type,isType(Mydf$Impressions[i], Mydf$Clicks[i]))}
# Add the column to Mydf
Mydf <- transform(Mydf, Type = Type)
Run Code Online (Sandbox Code Playgroud)

输入数据:

关键字,展示次数,点击次数
"Hello",0,0
"World",1,0
"R",34,23

通缉输出:

关键字,展示次数,点击次数,输入
"Hello",0,0,"ZeroImp"
"World",1,0,"NoClicks"
"R",34,23,"HasClicks"

Cha*_*les 10

在Joshua的解决方案的基础上,我发现在单次拍摄中生成Type更加清晰(请注意,这假设Clicks> = 0 ......)

Mydf$Type = ifelse(Mydf$Impressions >= 1,
    ifelse(Mydf$Clicks >= 1, 'HasClicks', 'NoClicks'), 'ZeroImp')
Run Code Online (Sandbox Code Playgroud)