我想知道是否可以更新满足某些条件的所有行的值,这些条件是我使用过滤器选择的
我试着从这里开始:
|Disaster | TVal | FVal|
|-------------|------|-----|
|Tornado | 0 | 0 |
|Fire | 0 | 0 |
|Fire Tornado | 0 | 0 |到这里:
|Disaster | TVal | FVal|
|-------------|------|-----|
|Tornado | 1 | 0 |
|Fire | 0 | 1 |
|Fire Tornado | 0.5 | 0.5 |我像这样选择行
foo %>% filter(grepl("TORNADO", Disaster))发布于 2017-02-12 03:04:07
根据输出,base R选项将'Disaster‘列拆分为空格,在对其进行unlist ( 'un1’)后获得unique元素,然后循环‘un1’(sapply(..),使用grepl从'Disaster‘列获得逻辑向量,将输出除以输出的行和(addmargins创建sum列),并将输出分配给'foo’的第2列和第3列
un1 <- unique(unlist(strsplit(foo$Disaster, "\\s+")))
m1 <- addmargins(sapply(un1, function(x) grepl(x, foo$Disaster)),2)
foo[2:3] <- m1[,1:2]/m1[,3]
foo
# Disaster TVal FVal
#1 Tornado 1.0 0.0
#2 Fire 0.0 1.0
#3 Fire Tornado 0.5 0.5数据
foo <- structure(list(Disaster = c("Tornado", "Fire", "Fire Tornado"
), TVal = c(0L, 0L, 0L), FVal = c(0L, 0L, 0L)), .Names = c("Disaster",
"TVal", "FVal"), class = "data.frame", row.names = c(NA, -3L))https://stackoverflow.com/questions/42179903
复制相似问题