r - 如果在其他列中满足条件,则将值附加到向量
问题描述
我正在循环几个数据帧,我试图根据 df["TEST"] 中的值填充一个向量。
对于数据帧的每一行——除了最后两行——如果 df["TEST"] 中的值为 1,我想将 df["HOD"] 中的相应值附加到我的向量 v 中。
这是我正在循环的数据帧的结构:
df <- structure(list(GAME = structure(c("Tottenham/Crystal Palace",
"Valencia/Leganes", "Atl. Madrid/Celta Vigo", "Granada CF/Barcelona",
"Napoli/Cagliari", "Brescia/Juventus", "CASH", "TOTAL"), .Names = c(NA,
NA, NA, NA, NA, NA, "GAME", "GAME")), WEIGHT = c(2.23823589057186,
2.61685996579251, 2.63527504587693, 0.457669317949777, 2.64922876342808,
11.1833333333333, 78.2193976830475, 100), RECO = structure(c("Tottenham",
"Valencia", "Atl. Madrid", "Granada CF", "Napoli", "Juventus",
"/", "/"), .Names = c(NA, NA, NA, NA, NA, NA, "RECO", "RECO")),
SIDE = structure(c("back", "back", "back", "back", "back",
"back", "/", "/"), .Names = c(NA, NA, NA, NA, NA, NA, "SIDE",
"SIDE")), LEAGUE = structure(c("Premier League", "Liga",
"Liga", "Liga", "Serie A", "Serie A", "/", "/"), .Names = c(NA,
NA, NA, NA, NA, NA, "LEAGUE", "LEAGUE")), IDGAME = structure(c("G233051",
"G233135", "G233113", "G233112", "G233175", "G233158", "/",
"/"), .Names = c(NA, NA, NA, NA, NA, NA, "IDGAME", "IDGAME"
)), TEST = structure(c("1", "0", "0", "1", "0", "1", "1",
"1"), .Names = c(NA, NA, NA, NA, NA, NA, "TEST", "TEST")),
HOD = structure(c("1.3", "1.5", "1.36", "8", "1.25", "1.36",
"1", "1"), .Names = c(NA, NA, NA, NA, NA, NA, "HOD", "HOD"
)), AMOUNT = c(0.283340944091571, 0.331271416201643, 0.333602603096921,
0.0579369034228574, 0.335369020801678, 1.41571147085297,
1, 1), LONG = c(-0.283340944091571, -0.331271416201643, -0.333602603096921,
-0.0579369034228574, -0.335369020801678, -1.41571147085297,
93.452071771034, 96.2093041295016), SHORT = c(0, 0, 0, 0,
0, 0, 1, 1), CTR = c(0.368343227319042, 0, 0, 0.463495227382859,
0, 1.92536760036004, 93.452071771034, 96.2092778260959)), row.names = c(NA,
-8L), class = "data.frame")
以下是我尝试过的。我也尝试过 ifelse 但找不到解决方法。
v <-vector()
for(j in seq(38)){
n <-paste0("FWKD",j)
if(exists(n)){
df<-get(n)
apply(df, 1, function(x){
if(df[[x,"TEST"]] ==1){
v <- append(v, df[[x,"HOD"]])
}
})
}
}
assign("OUTPUT1",as.data.frame(v))
谢谢您的帮助
解决方案
你可以做 :
#Remove last 2 rows
tmp <- head(df, -2)
#Get the corresponding value of HOD where TEST = 1
v <- as.numeric(tmp$HOD[tmp$TEST == 1])
v
#[1] 1.30 8.00 1.36
推荐阅读
- python - 调用前一个函数中定义的变量时显示错误值 (None)
- php - Symfony,WebTestCase 案例,由于测试中未使用的服务而崩溃
- node.js - Nodejs + Firebase 身份验证
- c - C中的函数和while循环问题:找不到我无法退出循环的原因
- amazon-s3 - aws s3 上的 Mp4 导致过度获取
- javascript - 当页面动态加载超过 20 个音频标签时,如何自动播放一个音频标签?
- three.js - 从 Blender 将 .obj 导入 Three.js - 模型中缺少孔
- reactjs - 反应路由器在父母中获得道具
- java - Apache POI 抛出空指针异常
- firebase - Flutter + Firebase:如何实现“谷歌登录”