r - 增加 ifelse True 计数并写入列
问题描述
我有一个小标题,我想在每次满足 if 条件时增加计数并写入列。截至目前,我只能改变字符串。我该怎么做?
treeTable_w_bucket %>%
mutate(bucket = ifelse(Feature == "g201a", "test", bucket))
Tree Node Feature Bucket
0 0 g201a NA
1 1 re20s NA
2 0 g201a NA
3 0 g201a NA
结果
Tree Node Feature Bucket
0 0 g201a bucket_1
1 0 re20s NA
2 0 g201s bucket_2
3 0 g201s bucket_3
解决方案
我们可以用replace
library(dplyr)
library(stringr)
treeTable_w_bucket <- treeTable_w_bucket %>%
mutate(bucket = replace(Bucket, Feature == 'g201a',
str_c('bucket_', seq_len(sum(Feature == 'g201a')))))
或使用base R
i1 <- treeTable_w_bucket$Feature == 'g201a'
treeTable_w_bucket$bucket[i1] <- paste0("bucket_", cumsum(i1)[i1])
treeTable_w_bucket
# Tree Node Feature Bucket bucket
#1 0 0 g201a NA bucket_1
#2 1 1 re20s NA <NA>
#3 2 0 g201a NA bucket_2
#4 3 0 g201a NA bucket_3
数据
treeTable_w_bucket <- structure(list(Tree = 0:3, Node = c(0L, 1L, 0L, 0L), Feature = c("g201a",
"re20s", "g201a", "g201a"), Bucket = c(NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-4L))
推荐阅读
- jenkins - Jenkins:更改 JenkinsFile 的名称
- python - 从 Python 中 OrderedDict 中的值获取最大值
- hex - TCL:如何将十六进制值转换为有符号整数?
- nginx - nginx反向代理在局域网上工作但不是公共的
- c++ - QScreen geometry() api 为分辨率 2736 x 1824 和 2560 x 1600 提供了错误的值
- java - 如何正确发送带有 DataOutPutStream 的 http post 请求,以便服务器可以处理它
- python - 使用元素树向子树添加新元素
- c# - 在字符串:字符串字典中查找值,其中给定的过滤字符串是键字符串的子集
- java - 发布版本的 Gson 解析问题 - 返回不正确的字符串
- c++ - 无法将 Omnetpp::cPacket 转换为 Inet::Packet