我在数据框中有一个列(名为A),其中包含自然数以及自然数的向量。对于其中存在自然数向量的单元格,我想计算该向量的均值。然后将最终结果存储在名为B的新列中。
目前,我尝试执行以下操作:
Val <- unlist(lapply(str_split(data$A, ","),
function(x) mean(as.numeric(x), na.rm=TRUE)))
Val[length(Val)] <- mean(Val[-length(Val)], na.rm=TRUE)
data$B <- Val
但是,这似乎无法正常工作。上面的函数没有提供向量的均值,当向量中只有2个元素时,它将返回NaN。下面是一个看起来像的例子
如果您将列A
用作文本,则另一种方法是使用gsub
,从列中删除多余的字符,以逗号分隔,然后使用mean
。使用@ zx8754的数据
sapply(strsplit(gsub('[c()]', '', df1$A), ","), function(x) mean(as.numeric(x)))
#[1] 1.000 2.000 3.000 2.000 3.000 2.333 3.000 3.000 2.500