r - 如何在R中以字符串为条件创建变量
问题描述
我正在尝试在 R(act_users)中的字符串的值的 df 条件中创建变量“活动”。如果 df 中变量 scr_name 和 rt_name 的名称在字符串内,我希望变量取值 1,如果不是 0。
df <- data.frame("screen_name" = c("august", "berit", "christopher", "david", "erica", "frank"), "rt_name" = c("berit", "august", "david", "erica", "frank", "christopher"))
act_users <- c("david", "august", "berit")
我尝试了以下 if else 语句,但它们都不起作用
'%!in%' <- function(x,y)!('%in%'(x,y))#create a function
df$active <- ifelse((df$screen_name %in% act_users) & (df$rt_name %in% act_users), 1,
ifelse((df$screen_name %!in% act_users) & (df$rt_name %!in% act_users), 2))
#attempts only with screenname
df$active <- ifelse(df$screen_name %in% act_users, "1", ifelse(df$screen_name %!in% act_users, "0"))
df$active <- if(df$screen_name %in% act_users){
df$active == 1
} else {
df$active == 0}
我的最后一个解决方案是将活动用户字符串设置为 df,合并结果并匹配数据框中的列,但是我的数据很大,所以使用更有效的解决方案会更好吗?
预先感谢!
解决方案
也许你可以使用下面的代码来制作它,这可能比apply(df,1,...)
你有很多行时更快:
- 解决方案1:
df$active <- Reduce("*",lapply(df, function(x) ifelse(x %in% act_users,1,0)))
- 解决方案2:
df <- within(df, active <- ifelse(screen_name%in%act_users & rt_name%in%act_users,1,0))
输出
> df
screen_name rt_name active
1 august berit 1
2 berit august 1
3 christopher david 0
4 david erica 0
5 erica frank 0
6 frank christopher 0
推荐阅读
- azure - 如何使用 | 将 CSV 转换为 JSON 使用逻辑应用程序的分隔符
- amazon-web-services - Nginx 配置作为 AWS S3 的反向代理
- google-sheets - 创建总额减去百分比论坛la
- r - 添加图层时填充和颜色图例消失
- laravel - Ubuntu 18.04 上的 Laravel Forge 自定义 VPS
- php - $_POST 没有使用 bindValue 插入到帖子表中,而其他字段被插入
- reactjs - WP Gutenberg,如何将变量从后端(保存函数)传递到前端(在保存函数输出中呈现的 React 应用程序)?
- javascript - JS- 相应地过滤 JSON
- javascript - evoPDF 转换触发模式不起作用
- image - 在我在 vue chrome 开发工具中打开组件之前,数据属性中的图像文件路径不会显示