我有三年的检测数据。每年在一个站点上有8个概率。这些是no,a,n,na,l,la,ln,lna。我已经分配了下面的值:
no = 0
a = 1
n = 1
na = 2
l = 100
la = 101
ln = 101
lna = 102
在第二年,我希望计算并标记所有结果,因此上面两个术语的任意组合,以数字方式描述检测历史。
所以从本质上讲,我试图获得64个术语的列表,范围从no,no到lna,lna,以及它们各自的值。
例如,no,no =0和lna,lna = 204
在第三年,我也希望如此。我想计算并标记所有的可能性。这需要排列在两列中,一列包含历史文本,另一列包含历史值。
x1 x2
no,no,no 0
我相信这是可能的,甚至可能是基本的。虽然我不知道从何说起。
任何帮助都将不胜感激。
提前感谢
发布于 2021-02-14 09:29:47
我相信有更优雅、更简洁的方法可以做到这一点,但这里有一种方法:
的两个可能性列表
poss = c("no", "a", "n", "na", "l", "la", "ln", "lna")
vals = c(1, 1, 2, 100, 101, 101, 101, 102)
expand.grid
枚举的可能性
output <- expand.grid(poss, poss, stringsAsFactors = FALSE)
comb_values <- expand.grid(vals, vals)
output$names <- paste(output$Var1, output$Var2, sep = ",")
output$value <- comb_values$Var1 + comb_values$Var2
output$Var1 <- output$Var2 <- NULL
结果
names value
1 no,no 2
2 a,no 2
3 n,no 3
4 na,no 101
5 l,no 102
6 la,no 102
7 ln,no 102
8 lna,no 103
9 no,a 2
10 a,a 2
11 n,a 3
12 na,a 101
13 l,a 102
14 la,a 102
15 ln,a 102
16 lna,a 103
17 no,n 3
18 a,n 3
19 n,n 4
20 na,n 102
21 l,n 103
22 la,n 103
23 ln,n 103
24 lna,n 104
25 no,na 101
26 a,na 101
27 n,na 102
28 na,na 200
29 l,na 201
30 la,na 201
31 ln,na 201
32 lna,na 202
33 no,l 102
34 a,l 102
35 n,l 103
36 na,l 201
37 l,l 202
38 la,l 202
39 ln,l 202
40 lna,l 203
41 no,la 102
42 a,la 102
43 n,la 103
44 na,la 201
45 l,la 202
46 la,la 202
47 ln,la 202
48 lna,la 203
49 no,ln 102
50 a,ln 102
51 n,ln 103
52 na,ln 201
53 l,ln 202
54 la,ln 202
55 ln,ln 202
56 lna,ln 203
57 no,lna 103
58 a,lna 103
59 n,lna 104
60 na,lna 202
61 l,lna 203
62 la,lna 203
63 ln,lna 203
64 lna,lna 204
三天都是一样的逻辑,只需用poss, poss, poss
替换poss, poss
即可。
https://stackoverflow.com/questions/66189691
复制相似问题