r - 根据某些条件在 R 中创建新列
问题描述
所以我有一个数据集 df,它看起来像这样
Customer Spending($)
abc 10
abc 11
123 5
123 10
456 9
456 2
我想创建一个新列,将其命名为 <$20,它将返回支出总和小于 20 美元的客户的姓名,如果客户花费超过 20 美元,则返回空值。
我希望结果看起来像这样
Customer Spending($) <20
abc 10 null
abc 11 null
123 5 123
123 10 123
456 9 456
456 2 456
关于如何去做的任何想法?我觉得这应该是基本的,但我正在努力。谢谢!
解决方案
尝试这个。您可以直接嵌入比较,预先清理Spending
变量,并获得所需的值。这里的代码:
library(dplyr)
#Code
newdf <- df %>% group_by(Customer) %>%
mutate(Var=ifelse(sum(as.numeric(gsub('$','',Spending,fixed = T)))>20,'null',Customer))
输出:
# A tibble: 6 x 3
# Groups: Customer [3]
Customer Spending Var
<chr> <chr> <chr>
1 abc $10 null
2 abc $11 null
3 123 $5 123
4 123 $10 123
5 456 $9 456
6 456 $2 456
使用的一些数据:
#Data
df <- structure(list(Customer = c("abc", "abc", "123", "123", "456",
"456"), Spending = c("$10", "$11", "$5", "$10", "$9", "$2")), class = "data.frame", row.names = c(NA,
-6L))
推荐阅读
- android - ArgumentCaptor - 参数不同
- sql - 我从连接函数中的列名中获取聚合函数/错误分组
- javascript - 如何修复添加 2 个税收变量的 Javascript 代码
- c# - 如何从 XmlElement 中删除前缀而不是属性?
- html - 在 X 次换行后截断
- hyperledger-fabric - 根据 MagnetoCorp 示例实例化合约的问题
- android - Unity 导出 Android 64 位
- android - 为什么相同的 css 动画有时会不正确?
- google-apps-script - 在特定工作表的特定列中插入公式
- kotlin - Kotlin 编码约定、中缀函数和按位运算