所以我有这个数据集,看起来像这样:
Day A B C D
01.01 6 3 4 9
01.02 3 7 3 2
01.03 2 10 9 2
01.04 1 1 5 9
01.05 1 1 1 10
01.06 1 9 5 5
01.07 4 3 7 7
01.08 7 7 9 4
01.09 9 9 8 4
01.10 5 7 3 1A、B、C和D是商店,1到10是该商店当天销售数量最多的商品。因此,在A商店,他们可以售出许多商品,但第6号商品是第一天最畅销的商品。到目前为止,我的所有商店的名义频率表如下:
Item count of item
1 7
2 3
3 5
4 4
5 4
6 1
7 6
8 1
9 7
10 2因此,基本上在10天内,产品1成为7家商店中最畅销的商品。所以10天后最畅销的5种商品是这样的:
Item count of item
1 7
9 7
7 6
3 5
4 4我需要的是前5行是名为d1的新数据集中的第一行。d1中的第二行应该是第11天的前5行,依此类推。
#d1
Day 1st 2nd 3rd 4th 5th
01.10 1 9 7 3 4
01.11 9 1 7 3 4谢谢!
发布于 2020-06-19 04:03:55
这是提供数据的更好方法。使用dput()将其添加到此表单中。
Days <- structure(list(Day = c(1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07,
1.08, 1.09, 1.1), A = c(6L, 3L, 2L, 1L, 1L, 1L, 4L, 7L, 9L, 5L),
B = c(3L, 7L, 10L, 1L, 1L, 9L, 3L, 7L, 9L, 7L), C = c(4L,
3L, 9L, 5L, 1L, 5L, 7L, 9L, 8L, 3L), D = c(9L, 2L, 2L, 9L, 10L,
5L, 7L, 4L, 4L, 1L)), class = "data.frame", row.names = c(NA, -10L))要获得10天的表格,只需使用unlist()折叠数据
FreqTable <- table(unlist(Days[, -1])) # Tabulate all rows
FreqTable
#
# 1 2 3 4 5 6 7 8 9 10
# 7 3 5 4 4 1 6 1 7 2
Top5.freq <- sort(FreqTable, decreasing=TRUE)[1:5] # Top 5 products
Top5.prod <- as.numeric(names(Top5.freq)) # Product names
d1 <- data.frame(Day="1.10", t(Top5.prod)) # Row 1 of d1
colnames(d1)[-1] <- c("1st", "2nd", "3rd", "4th", "5th")
d1
# Day 1st 2nd 3rd 4th 5th
# 1 1.10 1 9 7 3 4您没有提供第11天的数据,也没有指明它代表的是一天还是第1- 11天的累计。
https://stackoverflow.com/questions/62455285
复制相似问题