我有以下 Dataframe ,df1
:
ID Group Time1 Time2 Time3
A00194 1 0.733 0.777 0.433
A00195 1 0.903 0.116 0.308
A00198 1 0.422 0.863 0.220
A00199 1 0.485 0.846 0.203
A02111 2 0.682 0.522 0.700
A02114 2 0.699 0.208 0.686
A02116 2 0.911 0.802 0.041
A02197 2 0.083 0.082 0.900
我想得到ID
和Group
,其中每个Time1:Time3
的值最高。
所需输出将喜欢:
ID Group Value Test
A02116 2 0.911 Time1
A00198 1 0.863 Time2
A02197 2 0.900 Time3
我尝试了下面的代码,但这需要我做三次才能得到所需的输出。
df1[which.max(df1$Time1),,c(1:4)]
我如何才能做到这一点?
6条答案
按热度按时间drnojrws1#
长格式数据需要找到每个
Time
。你可以使用
dplyr
和tidyr
。输出
或者使用
data.table
。输出
cs7cruho2#
2admgd593#
数据:
siv3szwd4#
您可以沿着列
sapply
,并使用which.max
来获得第一个最高值的行,该值可用于子集并获得所需的结果。egmofgnx5#
带有
max.col
的基本R选项给予
bxpogfeg6#
pivot_longer
+slice_max
的两行:同样的方法在R中: