计算数据框中一行的中位数并保存到新变量
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()
将它们转换为数字
我有一个 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()