我有一个DF:
df1 <- data.frame(ID = c('a', 'b', 'c', 'c1', 'd', 'e', 'f', 'g', 'h', 'h1'),
T_10_12 = c(11, 15, 14, 14, 13, 16, 15, 12, 11, 12),
T_12_14 = c(12, 16, 16, 16, 14, 17, 16.5, 13, 12, 12),
T_14_16 = c(13, 18, 17.5, 16.5, 15, 18, 17.2, 13, 13, 14),
T_out = c(10.5, 12.3, 14.5, 15.1, 15, 13, 12, 13, 13, 14))
我希望对列'T_10_12'、'T_12_14'、'T_14_16'进行子集化,以便每行只取一个值。从中选择值的列由列“T_out”中的数字指定。如果'T_out'= 10.5,则来自T_10_12的值被分配给新变量'T_in'。如果“T_out”= 14.5,则“T_14_16”中的值被分配给“T_in”。输出应该如下所示:
ID T_in T_out
1 a 11.0 10.5
2 b 16.0 12.3
3 c 17.5 14.5
4 c1 16.5 15.1
5 d 15.0 15.0
6 e 17.0 13.0
7 f 15.0 12.0
8 g 16.5 13.0
9 h 13.0 13.0
10 h1 14.0 14.0
3条答案
按热度按时间q5iwbnjs1#
我们可以使用
case_when
:7fhtutme2#
使用
findInterval
的基本R选项(因为您可以在列名中使用12
和14
来对T_out
中的值的区间进行分类)给
js5cn81o3#
根据
cur_column
中的值检查条件的通用方法输出