r - 应用函数中的条件语句在 R 中无法正常工作
问题描述
我有一个数据框,其 ID 列有许多重复的名称。所以我使用 table() 函数来获取 ID 的频率。像这样:
library(dplyr)
id <- runif(1000,1000,3000) %>% round() %>% as.character()
freq <- rep(1:50,20)
data <- data.frame(id,freq)
GetID <- function(a){
if (a[2]==1) newid <- a[1] else newid <- paste(a[1],1:a[2],sep = "-");
return(newid)}
idlist <- data %>% apply(., 1, GetID)
idlist2 <- unlist(idlist) %>% as.data.frame()
我想获得一个新的 ID 向量。如果频率等于 1,则新 ID 等于旧 ID。如果 freq 大于 1,则新 ID 是旧 id 结合其顺序。但是,if 语句似乎无法正常工作。所有新身份证都有订单号。
解决方案
你必须使用一个功能吗?如果不:
id <- runif(1000,1000,3000)
freq <- rep(1:50,20)
num <- 1:length(id)
data <- data.frame(num,id,freq)
data2 <- data %>% filter(freq == 1) %>% mutate(newid = id)
data3 <- data %>% filter(freq != 1) %>% mutate(newid = paste(id,freq,sep = "-"))
result <- rbind(data2,data3) %>% arrange(num)
推荐阅读
- jmeter - jmeter中窗口对象的替代选项
- bash - 如何在shell脚本中用双引号传递变量值
- reactjs - 如何处理 fetch() 中的错误请求
- html - html/css - 如何将关闭按钮放在圆形背景中
- amazon-web-services - 在 Docker 容器中运行 Google Lighthouse 的问题
- python - 如何部署托管在谷歌云中的 PostgresSQL python 应用程序?
- javascript - 如何动态更改 Swiper 中显示的幻灯片数量?
- swift - UIImage 直接从文件初始化
- vue.js - Vuetify:将对象属性引用传递给 v-for 中的文本字段
- python - 尝试使用python删除列中的一些数据