相关疑难解决方法(0)

如何用R中的子集替换NA和平均值(用plyr?)

我有一个数据框,其中包含来自蝾螈内脏的各种节肢动物的长度和宽度.因为一些胆量有数千种特定的猎物,我只测量了每种猎物类型的一个子集.我现在想用这个猎物的平均长度和宽度替换每个未测量的个体.我想保留数据帧,只需添加推算列(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)

以下是我尝试过的一些事情(没有用过): …

r subset na

16
推荐指数
1
解决办法
3万
查看次数

如何用中位数填充NA?

示例数据:

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月份所有先前值的中值.

statistics r plyr data.table

11
推荐指数
3
解决办法
2万
查看次数

标签 统计

r ×2

data.table ×1

na ×1

plyr ×1

statistics ×1

subset ×1