簡體   English   中英

迭代數據框並進行比較

[英]Iterating through data frame and comparing

所以說我有一個非常簡單的數據幀,如下所示:

  v    h  ptsv  ptsh
PIT   NE    21    28
 GB   KC    31    23 
CHI  HOU    27    20

它有訪問者( v )和主隊( h )列,並且有得分( ptsvptsh )列。 我想在數據框中創建一個新列,用於比較得分並輸入主隊或客隊首字母。

我寫了這段代碼:

tbl2$win <- rep("x",nrow(tbl2)) <BR>
tbl2$win <- ifelse(tbl2$ptsh > tbl2$ptsv,  tbl2$h, tbl2$v)

它不是打印出首字母,而是按字母順序打印出它們的數字。 還是R的新手

   tbl2$win <- ifelse(tbl2$ptsh > tbl2$ptsv,  tbl2$h, tbl2$v)

您的第一行代碼不是必需的

您的data.framefactor數據,這會混淆ifelse

str(tbl2)
#'data.frame':   3 obs. of  4 variables:
# $ v   : Factor w/ 3 levels "CHI","GB","PIT": 3 2 1
# $ h   : Factor w/ 3 levels "HOU","KC","NE": 3 2 1
# ...

?ifelse幫助頁面示例:

## ifelse()剝離屬性
##在使用日期和因素時這很重要

首先使用as.character轉換這些列:

tbl2[c("v","h")] <- lapply(tbl2[c("v","h")], as.character)
ifelse(tbl2$ptsh > tbl2$ptsv,  tbl2$h, tbl2$v)
#[1] "NE"  "GB"  "CHI"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM