相关疑难解决方法(0)

按组计算平均值

我有一个类似于这个的大型数据框:

df <- data.frame(dive=factor(sample(c("dive1","dive2"),10,replace=TRUE)),speed=runif(10))
> df
    dive      speed
1  dive1 0.80668490
2  dive1 0.53349584
3  dive2 0.07571784
4  dive2 0.39518628
5  dive1 0.84557955
6  dive1 0.69121443
7  dive1 0.38124950
8  dive2 0.22536126
9  dive1 0.04704750
10 dive2 0.93561651
Run Code Online (Sandbox Code Playgroud)

我的目标是在另一列等于某个值时平均一列的值,并对所有值重复此值.即在上面的示例中,我想为列speed的每个唯一值返回列的平均值dive.所以当时dive==dive1,平均值speed是这个,依此类推dive.

r dataframe r-faq

52
推荐指数
3
解决办法
8万
查看次数

如何用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-continaing数据的ggpairs

ggpairsGGally包中看起来非常有用,但是当NA数据集中的任何地方存在时它似乎失败:

#require(GGally)
data(tips, package="reshape")
pm <- ggpairs(tips[,1:3]) #works just fine

#introduce NA
tips[1,1] <- NA
ggpairs(tips[,1:3])
> Error in if (lims[1] > lims[2]) { : missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

我没有看到任何处理NA值的文档,并且ggpairs(tips[,1:3], na.rm=TRUE)(不出所料)解决方案不会更改错误消息.

我有一个数据集,其中可能有10%的值NA随机分散在整个数据集中.因此na.omit(myDataSet)将删除大部分数据.有没有办法解决?

r ggplot2

9
推荐指数
1
解决办法
3142
查看次数

用R中的日期中位数数据

我需要将字段"步骤"中的缺失值替换为在特定日期(按"日期"分组)计算的"步数"的中位数,并删除NA值.我已经提到了这个帖子,但我的NA值没有被替换.有人可以帮我找出我错在哪里吗?我更喜欢使用base package/data table/plyr.数据集看起来很近.像这样:-

        steps      date interval
    1:    NA 2012-10-01        0
    2:    NA 2012-10-01        5
    3:    NA 2012-10-01       10
    4:    NA 2012-10-01       15
    5:    NA 2012-10-01       20
   ---                          
17564:    NA 2012-11-30     2335
17565:    NA 2012-11-30     2340
17566:    NA 2012-11-30     2345
17567:    NA 2012-11-30     2350
17568:    NA 2012-11-30     2355
Run Code Online (Sandbox Code Playgroud)

数据集(活动)的结构和摘要如下所示

 #str(activity)  
 Classes ‘data.table’ and 'data.frame': 17568 obs. of  3 variables:
     $ steps   : int  NA NA NA NA NA NA NA NA NA NA ...
     $ date    : Date, format: …
Run Code Online (Sandbox Code Playgroud)

r median missing-data plyr

8
推荐指数
1
解决办法
835
查看次数

如何用这些列的中位数替换数值列中的 NA?

我正在处理具有多种数据类型的数据框。我想仅用该特定列的中位数替换数值列上的 NA 值。看到过关于用平均值替换的问题,但不是中位数。我的 df 类似于以下代码:

my_groups <- c(rep("A", 5), rep("B",5))
my_values_1 <- c(4, 9, 10, NA, 5, 12, NA, 7, 11, 8)
my_values_2 <- c(3, NA, 4, 8, 2, 11, 15, NA, 9, 10)
my_df <- data.frame(my_groups, my_values_1, my_values_2)
my_df %>% select_if(is.numeric)
Run Code Online (Sandbox Code Playgroud)

这给了我数字列,但我无法弄清楚下一步。

r dataframe tidyverse

2
推荐指数
1
解决办法
1085
查看次数

标签 统计

r ×5

dataframe ×2

ggplot2 ×1

median ×1

missing-data ×1

na ×1

plyr ×1

r-faq ×1

subset ×1

tidyverse ×1