【发布时间】:2018-08-23 22:11:34
【问题描述】:
我正在处理一个运动数据集,该数据集位于具有两个列的数据框中:比赛时间和事件。该事件始终是少数选项之一(尝试、犯规、换人等......)。
我想按事件将事件拆分为新列,因此想编写一个循环,显示“IF [CELL] contains ["event"] copy to column [3] else write [''] in第 [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] 包含“尝试”然后将 match_data[row, column 3] 设置为 match_data[row, column 2] 中的任何内容,否则设置 match_data[row ,第 3 列] 到 ''。
代码正确执行测试,因为整数被输入到存在“尝试”的正确行中。但是,输入的似乎是随机整数,而不是匹配单元格中的文本。
我认为这可能与函数使用的数据类型有关,但我在这里搜索了这个问题,似乎我正在使用的函数可以使用字符串,所以我看不出有什么问题发生在这里?
提前致谢!
【问题讨论】:
-
你能
dput()你的数据吗?这样我们就可以尝试重现它/让它变得更好(没有 for 循环) -
一种更易读的形式,即使保留
for循环也会是match_data[row,3] <- ifelse(grepl("Attempt", match_data[row,2]), match_data[row,2] , "')`