- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望将每个列和组出现的所有相等/相同值(唯一 == 1)设置为 NA:
如果每个组和 col 我们至少有 2 个不同的值,我想保留它们。
很难解释。以下是一些示例数据:
代表。示例:
ds <- data.frame()
for (i in 1:3) {
for(ii in 1:3) {
ds <- rbind(mtcars[i,1:4],ds)
}
}
rownames(ds) <- NULL
ds[1,1] <- 1337;ds[2:3,3] <- 1337;ds[5,2] <- 1337;ds[8,1] <- 1337;
ds <- cbind(group=rep(1:3,each=3),ds,stringis=c("a","a","a","b","c","d","e","e","f"))
看起来像:
> ds
group mpg cyl disp hp stringis
1 1 1337.0 4 108 93 a
2 1 22.8 4 1337 93 a
3 1 22.8 4 1337 93 a
4 2 21.0 6 160 110 b
5 2 21.0 1337 160 110 c
6 2 21.0 6 160 110 d
7 3 21.0 6 160 110 e
8 3 1337.0 6 160 110 e
9 3 21.0 6 160 110 f
>
期望的输出是:
> ds
group mpg cyl disp hp stringis
1 1 1337.0 NA 108 NA NA
2 1 22.8 NA 1337 NA NA
3 1 22.8 NA 1337 NA NA
4 2 NA 6 NA NA b
5 2 NA 1337 NA NA c
6 2 NA 6 NA NA d
7 3 21.0 NA NA NA e
8 3 1337.0 NA NA NA e
9 3 21.0 NA NA NA f
>
我认为我可以在 tapply 中使用 sapply 来做到这一点,但我认为应该有更好、更易读/更快的解决方案。
寻找通用解决方案。实际上,这些组并不总是三重组等。
最佳答案
这是一个想法,
f1 <- function(x) replace(x, length(unique(x)) == 1, NA)
library(dplyr)
ds %>%
group_by(group) %>%
mutate_all(funs(f1))
#Source: local data frame [9 x 6]
#Groups: group [3]
# group mpg cyl disp hp stringis
# <int> <dbl> <dbl> <dbl> <dbl> <fctr>
#1 1 1337.0 NA 108 NA NA
#2 1 22.8 NA 1337 NA NA
#3 1 22.8 NA 1337 NA NA
#4 2 NA 6 NA NA b
#5 2 NA 1337 NA NA c
#6 2 NA 6 NA NA d
#7 3 21.0 NA NA NA e
#8 3 1337.0 NA NA NA e
#9 3 21.0 NA NA NA f
或者如果你不想定义一个函数,那么
ds %>%
group_by(group) %>%
mutate_all(funs(replace(., length(unique(.)) == 1, NA)))
数据表
library(data.table)
setDT(ds)[, lapply(.SD, f1), by = group][]
# group mpg cyl disp hp stringis
#1: 1 1337.0 NA 108 NA NA
#2: 1 22.8 NA 1337 NA NA
#3: 1 22.8 NA 1337 NA NA
#4: 2 NA 6 NA NA b
#5: 2 NA 1337 NA NA c
#6: 2 NA 6 NA NA d
#7: 3 21.0 NA NA NA e
#8: 3 1337.0 NA NA NA e
#9: 3 21.0 NA NA NA f
基础 R
ds[-1] <- lapply(ds[-1], function(i) with(ds, ave(i, group, FUN = f1)))
ds
# group mpg cyl disp hp stringis
#1 1 1337.0 NA 108 NA <NA>
#2 1 22.8 NA 1337 NA <NA>
#3 1 22.8 NA 1337 NA <NA>
#4 2 NA 6 NA NA b
#5 2 NA 1337 NA NA c
#6 2 NA 6 NA NA d
#7 3 21.0 NA NA NA e
#8 3 1337.0 NA NA NA e
#9 3 21.0 NA NA NA f
关于r - 设置所有相同的值 NA、groupwise 和 colwise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44135631/
我想从 Novell GroupWise 客户端(使用版本 8)读取邮件、日历和联系人项目。如何开始?哪个 API 最适合这个? 如果我使用“gwtapp.dll”或“GroupWise Web 服务
是否有人知道通过直接与 GroupWise 服务器通信来检索和发送邮件的方法。 如果可能的话,我希望能够使用 Java 检索邮件。 我编写了一个 Outlook 插件,通过 Groupwise Out
我有一个工作查询,看起来效率极低;我想知道我是否缺少一种简单的方法来改进它。 简单表格: id date master_id-------------------------1 2
我正在尝试计算返回表中的最大值以及该表中的其他值。但是,我这样做的表不是“真正的”表,它是由子查询生成的。这给我带来了问题,因为我不认为我可以在不重新指定整个子查询的情况下加入它两次。 我目前有一个
产品表: id: int name: varchar(255) info: varchar(8000) 我需要获取所有产品的列表,按名称分组,如果某些产品名称相同,则应选择 info 字段中数据最多的
表:贷款 Loan_no Amount SSS_no Loan_date 7 700.00 0104849222
我正在尝试的是我有一张彩票 table 。我必须显示用户的购买彩票。每个用户购买10个一包,可能多或少,如果增加则视为其他包。现在我必须按日期显示结果,每个包都有自己的 block ,这是我得到的当前
我有两个表: CREATE TABLE share_prices ( price_id int(10) unsigned NOT NULL AUTO_INCREMENT, price_
我希望将每个列和组出现的所有相等/相同值(唯一 == 1)设置为 NA: 如果每个组和 col 我们至少有 2 个不同的值,我想保留它们。 很难解释。以下是一些示例数据: 代表。示例: ds ds
我正在尝试允许将 Novell GroupWise 中打开的电子邮件中的附件放入我的 C# WinForms 应用程序中。标准的 .NET 功能不起作用。 在控件的 DragDrop 事件中,e.Da
从 GroupWise 获取约会列表时,检索到的约会对象中的某些日期与 GroupWise 中的值不匹配,实际上它们是 50 多年以后的日期。例如,在以下方法中,我查找从 2000 年 1 月 1 日
我有一个属于“每组最多 n 个”类别的问题,但略有不同。我有一个如下表: | t_id | t_amount | b_id | b_amount | |------|----------|------
挑战是从表格中选择每日最高温度以及每个温度的日期和时间信息。 SELECT datestamp, max(temp) hitemp from Weather w group by `year`, `m
我整个下午都在努力寻找一个简单的 mailto:标签来工作。我已经在互联网上搜索过,但到目前为止,建议的修复方法都没有解决问题。 问题 我有一个网页,我希望用户能够从中发送电子邮件。此页面将在内部网络
我有一个 Java 应用程序,它有自己的用户名和密码表。我们正在尝试升级系统,以便用户可以简单地使用他们的 groupwise/novell 帐户登录,本质上是同步他们的帐户。 验证他们的用户名和密码
这可能吗,或者有 API 吗? Novell 的网站上有一个 GroupWise API,但我没有看到任何发送即时消息的方法,只有电子邮件。 我只想创建一个 Java 程序,该程序将向使用 Novel
我正在尝试通过 NOVELL 提供的 SOAP 库创建一个约会.像这样: $appointment = new Appointment(); $appointment->source = 'p
如何“分组”将函数应用于数据框的每一列?IE。按一列的值分组并计算例如表示每组+其他列。预期的输出是带有索引的数据框 - 不同组的名称和值 - 每个组+列的平均值 例如考虑: df = pd.Data
考虑这个df: import pandas as pd, numpy as np df = pd.DataFrame.from_dict({'id': ['A', 'B', 'A', 'C', 'D'
我想在内部电子邮件 时事通讯的顶部放一个目录,这样读者就可以“跳转”到他们感兴趣的时事通讯部分。像这样的东西: Funding Opportunities Professio
我是一名优秀的程序员,十分优秀!