我有一系列我想要标准化的列名.
names <- c("apple", "banana", "orange", "apple1", "apple2", "apple10", "apple11", "banana2", "banana12")
Run Code Online (Sandbox Code Playgroud)
我希望任何具有一位数字的东西都用零填充,所以
apple
banana
orange
apple01
apple02
apple10
apple11
banana02
...
Run Code Online (Sandbox Code Playgroud)
我一直在努力使用 stringr
strdouble <- str_detect(names, "[0-9]{2}")
strsingle <- str_detect(names, "[0-9]")
str_detect(names[strsingle & !strdouble])
Run Code Online (Sandbox Code Playgroud)
但无法弄清楚如何有选择地替换/预先...
我有数据显示客户购买了某些商品.他们可以多次购买商品.我需要的是一张表格,其中显示了所有可能的项目成对组合以及购买该组合的客户的唯一数量(表格的对角线将是购买每个项目的唯一人数).
这是一个例子:
item <- c("h","h","h","j","j")
customer <- c("a","a","b","b","b")
test.data <- data.frame(item,customer)
Run Code Online (Sandbox Code Playgroud)
这是test.data:
item customer
h a
h a
h b
j b
j b
Run Code Online (Sandbox Code Playgroud)
需要的结果 - 包含行和列名称的项目的表格,以及在表格内购买该对的唯一客户的计数.因此,2个客户购买了商品h,1个购买了商品h和j,1个购买了商品j.
item h j
h 2 1
j 1 1
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用表函数melt/ cast等,但没有任何东西能让我获得表中所需的计数.我的第一步是使用unique()去掉重复的行.