R 从表中提取具有最后一个数据点的列号
我有以下反转的数据帧R 从表中提取具有最后一个数据点的列号,r,R,我有以下反转的数据帧 z Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 14 -8.70 0.28 18.66 4.81 -34.33 40.39 3.09 7.89 49.41 13 -6.10 9.51 -1.09 -0.01 7.89 -7.37 -0.61 -9.79 31.75 40.67 5.41 -10.
z
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
14 -8.70 0.28 18.66 4.81 -34.33 40.39 3.09 7.89 49.41
13 -6.10 9.51 -1.09 -0.01 7.89 -7.37 -0.61 -9.79 31.75 40.67 5.41 -10.53
12 -5.21 7.49 -7.92 3.54 11.19 -6.66 23.64 13.21 9.64 14.44 59.95 -20.96
11 -12.68 11.04 -11.10 -6.18 -5.61 8.93 94.99 30.15 14.37 31.08 -9.02 -14.77
10 5.07 -2.04 22.77 12.05 0.38 -3.28 -2.73 11.26 5.30 4.61 13.80 3.68
9 -0.82 0.86 3.18 1.06 6.47 1.57 2.25 -9.34 5.27 7.25 2.85 0.42
8 10.48 1.17 10.97 -0.13 0.32 -5.89 -2.26 -7.28 -1.39 3.35 14.81 3.40
7 -5.22 3.09 -7.75 -3.41 -0.09 12.37 -17.38 1.41 8.57 10.48 -1.20 7.45
6 13.85 7.22 3.14 -2.92 -7.12 0.45 3.51 -2.30 7.07 -2.83 -2.27 -1.52
5 -0.57 0.58 -2.59 3.29 -6.07 0.37 1.32 -0.58 4.07 -4.85 -0.48 1.66
4 0.46 -0.41 3.01 0.60 2.20 -2.39 0.22 3.99 5.50 16.07 -4.51 0.50
3 1.28 5.10 -3.61 5.02 3.04 -4.05 -2.64 1.88 -2.44 3.27 -2.71 2.02
2 -1.28 0.99 2.38 0.16 1.03 10.93 5.07 0.26 0.84 -0.05 -0.88 -3.71
1 2.33 -1.71 -0.41 -0.58 -2.19 1.26 1.88 -4.03 0.54 0.34 0.22 -0.50
我想找出本例中最后一个数据点为-0.50的列,并将列名提取为数字(12),但不使用-0.50数据点,以下表达式有误
which( colnames(z)==-0.50)
integer(0)
which( colnames(z)==z[length(z)])
integer(0)
第二个例子
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
18 -12.97 9.96 8.14
17 1.50 3.27 7.38 -1.63 8.53 2.97 1.51 10.99 4.51 -5.70 1.15 9.50
16 -1.38 3.61 -3.98 10.51 -8.39 5.29 -2.01 -3.47 -0.17 -6.20 13.93 9.04
15 -3.96 1.72 -3.28 2.06 -0.26 -1.27 -4.58 3.23 -7.76 2.09 7.33 16.81
14 4.38 0.56 7.09 -5.31 -2.61 -2.66 0.66 0.56 4.64 13.75 -7.10 -5.15
13 -10.13 -6.04 12.62 -3.76 -3.96 7.95 4.71 6.04 7.63 -7.96 -0.69 14.16
12 5.95 11.95 -10.80 2.45 10.19 -5.20 -0.68 0.62 0.26 4.72 -2.48 10.27
11 2.72 11.56 -0.80 -8.62 0.28 -2.96 1.33 3.09 5.14 4.03 6.37 -0.19
10 -5.38 6.58 4.64 -4.21 6.62 3.13 -1.85 7.63 -6.17 -2.95 7.32 -4.37
9 4.20 -2.58 4.01 5.66 -2.94 -1.17 -0.47 4.54 -1.10 1.48 3.24 2.14
8 3.86 -5.93 -3.95 6.46 5.05 1.91 -1.18 -0.88 6.99 2.52 2.42 0.24
7 3.85 7.95 -0.66 -0.99 1.99 5.06 -4.63 -3.00 -0.41 3.73 4.97 2.10
6 0.99 -0.21 -1.64 -3.01 -2.03 -1.26 -1.52 0.32 2.85 -1.59 5.12 -2.45
5 -2.64 2.33 4.91 1.75 -1.01 1.47 -2.78 4.78 0.94 2.51 -2.01 3.75
4 0.08 1.51 0.25 3.00 -2.16 -2.51 4.59 1.43 0.16 -2.59 0.97 1.65
3 0.63 -0.83 -0.68 0.12 -0.22 -3.17 4.41 -1.29 -2.18 -2.54 1.00 1.36
2 2.51 0.17 2.66 3.41 -2.40 -1.77 -0.63 -3.80 3.47 3.20 2.20 0.37
1 -2.37
最后一点是1月-2.37日
谢谢
col我的答案基于@BrodieG的答案
col <- max(which(!is.na(t(as.matrix(z))))) %% ncol(z)
if(!col) col <- ncol(z)
names(z)[[col]]
# [1] "Dec"
您可以尝试nchar
测试“空单元格”:
您正在寻找类似于的东西(z=-.5,arr.ind=TRUE)
?你的问题不是很清楚。另外,请注意您所描述的浮点问题。我希望选择最后一个数据点所在的列,并提取列名或其对应的数字作为长度(z)=12,但是没有特定的数字,因为必须将其应用于其他表。我不太理解您的问题。如果@AnandaMahto的答案不是你想要的,也许你可以简单地使用ncol(z)
?如果问题不清楚,谢谢你的时间和建议。我希望提取与z中最后一个数据点一致的列号,如果可能,不使用数据点-0.50或ncol(z)这恰好是最后一列,与最后一个数据点相同。请dput
您的数据,以便我们能够准确地了解我们在这里处理的内容。即使最后一个数据点不是12月,您的答案也提供了第12列。@Barnaby,空数据点是NA
?如果它们是其他内容,这显然不起作用,但如果您提供有关数据内容的更多详细信息(data.frame
带有字符、列等),则可以进行更新以使其起作用。什么代表空虚?谢谢,忘了读你的底线没有。我可以尝试将NAs用于讨论中的问题。z是一个表,不确定这是否会影响结果,请立即尝试NAs@Barnaby,我知道的唯一数据类型是由table()
生成的数据类型,它不能与您显示的数据类型相同。当你做str(z)
,你会得到什么?这是一个数据框,我的观点。谢谢你,我能问你转换成矩阵的原因吗z@Barnaby:nchar
如果使用data.frame
,则计算每列的字符数。要获得每个单元格的字符数,我将其转换为矩阵
。
tail(which(nchar(as.matrix(z)) == 0, arr.ind=TRUE), 1)