use*_*161 2 algorithm search r multiple-columns dataframe
我有一个像下面这样的数据库
Var1 Var2 Var3 X Y Z
VIX SPX VOL 2 3 4
SPX VIX NA 4 4 NA
SPX NA NA 2 NA NA
Run Code Online (Sandbox Code Playgroud)
我希望将第一行与来自用户的输入隔离为VIX,SPX和VOL.但是,在这样的数据库中,我不知道这些变量保存在哪个组合中.
也就是说,我们可能将VIX作为Var1,SPX作为Var2,VOL作为Var3,或者我们可能将VOL作为Var1,SPX作为Var2,VIX作为Var3.在这种情况下,可以有6种组合.
我可以连接字符串以在R中创建所有6种可能性并进行一行查找.但我正在寻找一种更简单的算法.
我试图使用子集来过滤一列接一列,但同样麻烦.在R中是否有更简单的方法
我们可以apply对前三列使用行方式,并检查grepl它是否具有三个可能值中的任何一个,最后使用all我们验证该行的所有三列都具有可接受的值.
df[apply(df[1:3], 1, function(x) all(grepl("VIX|SPX|VOL", x))), ]
# Var1 Var2 Var3 X Y Z
#1 VIX SPX VOL 2 3 4
Run Code Online (Sandbox Code Playgroud)
或者正如使用上述注释中提到的@Cath可能导致选择一些不必要的行.我们可以把它改成
df[apply(df[1:3], 1, function(x) all(c("VIX", "SPX", "VOL") %in% x)), ]
Run Code Online (Sandbox Code Playgroud)
确保三列中存在所有三个唯一值.
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |