我有这样的数据集其中变量很多,但我只选择显示几个:
dt <- data.table(ID = c(1,2,3, 4, 5),
diagnosis1 = c(0, 0, 1, 0, 1),
diagnosis2 = c(1, 0, 0, 1, 0),
diagnosis3 = c(0, 1, 1, 0, 1),
diagnosis4 = c(1, 0, 1, 0, 0))
共有5名患者和4种诊断类型。一名患者可以有诊断1,也可以有诊断3(fx患者5),但在我的最终数据集中,每位患者只允许有一种诊断。优先级列表如下:诊断1、诊断2、诊断3、诊断4。因此,在这种情况下,患者5应仅得到诊断1。
我有一个大的数据集,有多个变量,而不是上面显示的5个。所以输出应该是相同的,但取代1的,不是选择的一个0。
希望你能帮忙!
6条答案
按热度按时间h79rfbju1#
创建一个列名向量,然后使用
min(which()
by ID:更新:
明确指定dx优先级:
上一个答案
让diagnosis列的顺序决定优先级
输出:
dkqlctbz2#
7cwmlq893#
如果需要输出变量名,另一个有用的函数是
max.col
,ties.method = "first"
为:如果需要选定的优先级顺序,可以先使用
setcolorder
重新排列数据:在底数R中,可以使用
apply
:j13ufse24#
使用this answer中的优先级向量在行上进行矢量化。
rqdpfwrv5#
使用
dplyr
chhqkbe16#
使用
set()
: