我有一个数据框,其中包含来自蝾螈内脏的各种节肢动物的长度和宽度.因为一些胆量有数千种特定的猎物,我只测量了每种猎物类型的一个子集.我现在想用这个猎物的平均长度和宽度替换每个未测量的个体.我想保留数据帧,只需添加推算列(length2,width2).主要原因是每行还有一些列,其中包含收集蝾螈的日期和位置的数据.我可以通过随机选择测量的个体填写NA,但为了论证,我们假设我只想用平均值替换每个NA.
例如,假设我有一个类似于以下内容的数据框:
id taxa length width
101 collembola 2.1 0.9
102 mite 0.9 0.7
103 mite 1.1 0.8
104 collembola NA NA
105 collembola 1.5 0.5
106 mite NA NA
Run Code Online (Sandbox Code Playgroud)
实际上,我有更多的列和大约25种不同的类群,总共约有30,000个猎物.似乎plyr包可能是理想的,但我无法弄清楚如何做到这一点.我不是很精通R或编程精通,但我正在努力学习.
并不是说我知道我在做什么,但如果有帮助,我会尝试创建一个小数据集.
exampleDF <- data.frame(id = seq(1:100), taxa = c(rep("collembola", 50), rep("mite", 25),
rep("ant", 25)), length = c(rnorm(40, 1, 0.5), rep("NA", 10), rnorm(20, 0.8, 0.1), rep("NA",
5), rnorm(20, 2.5, 0.5), rep("NA", 5)), width = c(rnorm(40, 0.5, 0.25), rep("NA", 10),
rnorm(20, 0.3, 0.01), rep("NA", 5), rnorm(20, 1, 0.1), rep("NA", 5)))
Run Code Online (Sandbox Code Playgroud)
以下是我尝试过的一些事情(没有用过): …
示例数据:
set.seed(1)
df <- data.frame(years=sort(rep(2005:2010, 12)),
months=1:12,
value=c(rnorm(60),NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA))
head(df)
years months value
1 2005 1 -0.6264538
2 2005 2 0.1836433
3 2005 3 -0.8356286
4 2005 4 1.5952808
5 2005 5 0.3295078
6 2005 6 -0.8204684
Run Code Online (Sandbox Code Playgroud)
请告诉我,我怎样才能将df $值中的NA替换为其他月份的中位数?"value"必须包含同月所有先前值的中值.也就是说,如果当前月份是5月,则"值"必须包含5月份所有先前值的中值.