gpt4 book ai didi

r - 获取 R 中每行的最后一个非零列名称并创建一个单独的列

转载 作者:行者123 更新时间:2023-12-02 16:18:04 25 4
gpt4 key购买 nike

我有以下数据集

ID  Jan Feb March April May Jun
ABC 0 1 0 0 2 1
DEF 1 2 1 0 0 0
GHI 0 10 0 1 0 0
JKI 0 0 2 0 0 0
MNO 3 0 0 0 0 0

我想要得到这样的东西

ID  Jan Feb March   April   May Jun LastMonth
ABC 0 1 0 0 1 1 Jun
DEF 1 1 1 0 0 0 March
GHI 0 1 0 1 0 0 April
JKI 0 0 1 0 0 0 March
MNO 1 0 0 0 0 0 Jan

我编写了以下代码来获取每行最后一个非零元素的索引,但这本身就有太多问题。

  df$last <- apply(df, 1, function(x) tail(x[x > 0.00001],1))

我得到的新列为

character(0)
character(0)
character(0)
2
character(0)

我不确定为什么我会得到此列而不是实际数字

最佳答案

我们可以使用 max.col 获取每行逻辑矩阵最大值的列索引 (df1[-1] != 0) 并用它来获取列名称

df1$LastMonth <- names(df1)[-1][max.col(df1[-1] != 0, 'last')]
df1$LastMonth
#[1] "Jun" "March" "April" "March" "Jan"

数据

df1 <- structure(list(ID = c("ABC", "DEF", "GHI", "JKI", "MNO"), Jan = c(0L, 
1L, 0L, 0L, 3L), Feb = c(1L, 2L, 10L, 0L, 0L), March = c(0L,
1L, 0L, 2L, 0L), April = c(0L, 0L, 1L, 0L, 0L), May = c(2L, 0L,
0L, 0L, 0L), Jun = c(1L, 0L, 0L, 0L, 0L)), .Names = c("ID", "Jan",
"Feb", "March", "April", "May", "Jun"), class = "data.frame",
row.names = c(NA, -5L))

关于r - 获取 R 中每行的最后一个非零列名称并创建一个单独的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51543226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com