如何根据R中的条件查找数据和打印值?

问题描述 投票:1回答:2

因此,我有一个包含12列数据的csv文件,我要做的是根据所需条件从CSV文件中获取特定值

enter image description here

提供了一些数据片段,所以我有此地图列表:

Maps <- c("Nuke","Vertigo","Inferno","Mirage","Train","Overpass","Dust2")

目标是为地图列表中的每个地图获取CTWinProb和TWinProb值,例如CTWinProbs;

Nuke = 0.5758

Dust2 = 0.4965

地狱= 0.4885

对于TWinProb,等反之亦然

到目前为止,我一直在使用非常乏味的sqldf库,这是我目前正在做的事情:

T1NukeCT <- sqldf("select CTWinProb from Team1 where MapName like '%Nuke%'")

输出T1NukeCT = 0.5758

并针对每个地图重复,然后再次针对TWinProb

我敢肯定,有一种更简单的方法,对于使用R来说是很新的东西,所以不是100%都是这里的最佳方法,也不是如何以一种不太乏味的方式去做]

r database csv sqldf
2个回答
0
投票

您可以使用WHERE IN (...)子句:

Maps <- c("Nuke","Vertigo","Inferno","Mirage","Train","Overpass","Dust2")
where_in <- paste0("('", paste(Maps, collapse="','"), "')")
sql <- paste0("SELECT CTWinProb FROM Team1 WHERE MapName IN ", where_in)
T1NukeCT <- sqldf(sql)

要清楚,上述脚本生成的SQL查询是:

SELECT CTWinProb
FROM Team1
WHERE MapName IN ('Nuke','Vertigo','Inferno','Mirage','Train','Overpass','Dust2')

0
投票

您到底在寻找什么输出/结果?

如果要在R中得到结果,这是两个返回所需值的简单函数。

它们需要加载dplry软件包。

library(dplyr)
YourData <- read_csv("./yourfile/.csv")

CTWinFunc <- function(x){
YourData %>% filter(MapName == x) %>% pull(CTWinProb)}

TWinFunc <- function(x){
YourData %>% filter(MapName == x) %>% pull(TWinProb)}

现在CTWinFunc("Nuke")应该为Nuke返回CTWinProb结果,即:0.5758

[TWinFunc("Nuke")应该为Nuke返回TWinProb结果,即:0.4242

如果您想返回一个包含所有结果的向量,我想您可以使用sapply函数。像这样的东西...

TWins <- sapply(Maps, TWinFunc)
TWins[lengths(TWins)==0] <- NA
TWins <- unlist(TWins)

这应该会给您一张带有结果的表:

cbind(Maps, Twins)

当然,似乎所有这些数据都已经在原始表中,您可以将其子集化。

YourData[,c(4,11,12)]
© www.soinside.com 2019 - 2024. All rights reserved.