计算数据框中一行的中位数并保存到新变量

Calculate median of a row in a dataframe and save to new variable

我有一个 excel 文件,看起来像这样

我将这个文件加载到 R 中,然后我想计算每行第 1 到第 6 列的中位数,并将结果保存在一个新变量中。我尝试执行以下操作:

data$C_median <- median(data[1:6], na.rm=TRUE)

然而,这会导致以下错误:

Error in median.default(data[1:6], na.rm = TRUE) : need numeric data

我不确定如何解决这个问题,因为我相信所有数据都已经是数字(除了使用 na.rm = TRUE 删除的 na 值)。

请注意,为了计算平均值,我可以毫无问题地使用类似形式的代码。

data$C_mean <- rowMeans(data[1:6], na.rm=TRUE)

由于要计算从第 1 列到第 6 列的每一行的中位数,可以使用 apply() 来实现

data$median <- apply(data[1:6],1,function(v) median(as.numeric(v),na.rm = T))

请注意,您遇到的错误表明您使用的是非数字类型的数据,因此您需要先通过as.numeric()

将它们转换为数字