[英]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.