我需要在R中创建一个计算,但计算会根据数字的不同而变化

我需要在R中创建一个计算,但计算会根据数字的不同而变化,r,R,我有一个巨大的xlsx文件,里面装满了关键字排名,我需要计算排名的可见性。Excel不能处理这么大的文件,所以我正在学习R 无论如何,要计算关键字的可见性,我需要以下公式: 排名*%的搜索量 %取决于排名,而我使用: 1-90% 2-80% 3-70% 4-60% 5-50% 6-40% 7-30% 8-20% 9-10% 10-5% 11+-0% 当我可以在excel中工作时,我会将上面的图表放在一张表格中,然后根据搜索量对排名和*进行vlookup。例如: Keyword |rank |s

我有一个巨大的xlsx文件,里面装满了关键字排名,我需要计算排名的可见性。Excel不能处理这么大的文件,所以我正在学习R

无论如何,要计算关键字的可见性,我需要以下公式:

排名*%的搜索量

%取决于排名,而我使用:

1-90%
2-80%
3-70%
4-60%
5-50%
6-40%
7-30%
8-20%
9-10%
10-5%
11+-0%

当我可以在excel中工作时,我会将上面的图表放在一张表格中,然后根据搜索量对排名和*进行vlookup。例如:

Keyword  |rank |search volume |visibility    
keyword1 |1    |1,000         |900   
Keyword2 |5    |50,000        |25,000   
Keyword3 |12   |3,500         |0
我在R怎么做?我对R非常陌生,尝试了一些使用for循环的方法,但没有任何效果


提前感谢您使用名为rank_data的初始数据帧,如下

  keyword rank search_volume
1       A    1          1000
2       B    5         50000
3       C   12          3500
您可以创建一个小函数,并使用dplyr库中的mutate函数将结果附加到新列中

library(dplyr)

visFunc <- function(rank, search_volume){

    if(rank == 1){
        rank_pct <- 0.90
    }

    else if(rank == 5){
        rank_pct <- 0.50
    }

    else if(rank > 10){
        rank_pct <- 0
    }

    return(rank_pct * search_volume)

}

visabilityData <- mutate(rank_data, visability = mapply(visFunc, rank,search_volume))

显然,您可以根据需要调整函数。

谢谢您的回答,但我还是设法解决了这个问题


我制作了一个电子表格,在a列中有排名,在B列中有可见性%,导入此表格,并将此表格中的排名与主电子表格中的排名合并。然后我可以做所有的计算。

嗨,你能粘贴几行数据的
dput
,并显示预期的输出吗?请参见,例如,使用
cut
功能创建另一列,其中包含要使用的排名类。然后写一个函数,将rank类和其他输入作为参数,并用这个函数进行计算。我只是查了一下cut,它会在一定程度上起作用。虽然我可以“削减”等级11+并返回0表示可见性,但我仍然需要单独计算等级1-10。有没有更快的方法?谢谢你的帮助。
keyword rank search_volume visability
1       A    1          1000        900
2       B    5         50000      25000
3       C   12          3500          0