簡體   English   中英

R-如果滿足條件,將單元格復制到新列

[英]R - Copy cell to new column if condition met

我正在使用一個運動數據集,該數據集位於具有兩個列的數據框中:比賽時間和賽事。 該賽事始終是少數幾個選項之一(嘗試,犯規,換人等)。

我想按事件將事件分成新的列,因此想編寫一個循環,說“如果[CELL]包含[“ event”]復制到列[3],否則在列[3]中寫入[''] ]”

我想我可以使用for循環以及ifelse和grepl函數來做到這一點。

現在我有以下

for (row in 1:nrow(match_data)){

  ifelse((grepl("Attempt", match_data[row,2]), match_data[row,3] <- match_data[row,2] ,     match_data[row,3] <- '')

}

我認為這是對於match_data [row,column 2]包含“ attempt”的每一行,然后將match_data [row,column 3]設置為match_data [row,column 2]中的任何內容,否則將match_data [row,column 3]設置為] 至 ''。

該代碼正確執行測試,因為將整數輸入到存在“ Attempt”的正確行中。 但是,看似隨機的整數而不是匹配單元格中的文本被輸入。

我認為這可能與函數使用的數據類型有關,但是我在這里搜索了這個問題,似乎我正在使用的函數可以與字符串一起使用,所以我看不到這里發生了什么問題?

提前致謝!

使用case_when易於閱讀,編寫和修改

install.packages("tidyverse")

library(tidyverse)
match_data %>% 
  mutate(newcol = case_when(event == "goal" ~ "goal"
                            , event == "own goal" ~ "goal"
                            , event == "goal" & time = "01:00" ~ "first goal"  # just an example for multiple conditions
                            , TRUE ~ "no goal"))  # else statement

暫無
暫無

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

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