我有一个NBA比赛数据库。为了使数据库整洁,我尝试使用两列(team1,team2)并将它们合并为一列。由于数据的性质,这两列中只有一个字符数据。因此,将它们合并在一起不会损害数据完整性。
我仍然掌握函数的功能,所以这是我尝试的无效的方法:
for(i in nrow(NBA_Clutch$Washington[i])) {
if is.na(NBA_Clutch$Washington[i] == FALSE) {
print(NBA_Clutch$Washington[i])
} else {
print(NBA_Clutch$Cleveland[i])
}
}
答案 0 :(得分:2)
您不需要for循环。您可以使用dplyr::coalesce
NBA_Clutch %>% mutate(WA_CL= coalesce(Washington, Cleveland))
或在base
中:
NBA_Clutch$WA_CL <- na.omit(unlist(NBA_Clutch[,c("Washington", "Cleveland")]))
答案 1 :(得分:1)
使用ifelse
函数:
NBA_Clutch$newColumn = ifelse( !is.na(NBA_Clutch$Washington,
NBA_Clutch$Washington,
NBA_Clutch$Cleveland)
ifelse函数适用于矢量,其用法如下:
ifelse( condition, true case, false case)
如果要使用for循环,请进行以下更改:
for(i in 1:nrow(NBA_Clutch)) {
答案 2 :(得分:-1)
R
中的此类工作完全不需要for循环。在这种情况下,您可以整体使用该列:
NBA_Clutch$newcolumn <- NBA_Clutch$Washington
NBA_Clutch$newcolumn[is.na(NBA_Clutch$newcolumn)] <- NBA_Clutch$Cleveland[is.na(NBA_Clutch$newcolumn)]
如果您仍然想使用for
循环,我们可以做一些与您已有的类似的事情:
NBA_Clutch$newcolumn <- NBA_Clutch$Washington
for (i in 1:nrow(NBA_Clutch)) {
if (is.na(NBA_Clutch$Washington[i])) {
NBA_Clutch$newcolumn[i] <- NBA_Clutch$Cleveland[i]
} else {
NBA_Clutch$newcolumn[i] <- NBA_Clutch$Washington[i]
}
}