因此,我得到了一个如下所示的数据集:
a b c
23 34 Falcons
14 9 Hawks
2 18 Eagles
3 21 Eagles
22 8 Falcons
11 4 Hawks
23 34 Falcons
14 9 Hawks
3 21 Eagles
11 4 Hawks
2 18 Eagles
22 8 Falcons
14 9 Hawks
2 18 Eagles
3 21 Eagles
不会起作用,因为‘猎鹰’没有被代表。在R中有没有一种简单的方法可以做到这一点?
您可以在这里为每个组指定n(如果您只想要一个具有nrows的数据帧,请使用1s==组数
dd <- read.table(header = TRUE, text = 'a b c
23 34 Falcons
14 9 Hawks
2 18 Eagles
3 21 Eagles
22 8 Falcons
11 4 Hawks', stringsAsFactors = FALSE)
(n <- setNames(c(1,2,1), unique(dd$c)))
# Falcons Hawks Eagles
# 1 2 1
set.seed(1)
dd[as.logical(ave(dd$c, dd$c, FUN = function(x)
sample(rep(c(FALSE, TRUE), c(length(x) - n[x[1]], n[x[1]]))))), ]
# a b c
# 1 23 34 Falcons
# 2 14 9 Hawks
# 4 3 21 Eagles
# 6 11 4 Hawks
把它放入一个函数中,为您自动化其他一些事情
sample_each <- function(data, var, n = 1L) {
lvl <- table(data[, var])
n1 <- setNames(rep_len(n, length(lvl)), names(lvl))
n0 <- lvl - n1
idx <- ave(as.character(data[, var]), data[, var], FUN = function(x)
sample(rep(0:1, c(n0[x[1]], n1[x[1]]))))
data[!!(as.numeric(idx)), ]
}
sample_each(dd, 'c', n = c(1,2,1))
# a b c
# 1 23 34 Falcons
# 3 2 18 Eagles
# 5 22 8 Falcons
# 6 11 4 Hawks
sample_each(mtcars, 'gear', 1)
# mpg cyl disp hp drat wt qsec vs am gear carb
# Valiant 18.1 6 225.0 105 2.76 3.46 20.22 1 0 3 1
# Merc 280 19.2 6 167.6 123 3.92 3.44 18.30 1 0 4 4
# Maserati Bora 15.0 8 301.0 335 3.54 3.57 14.60 0 1 5 8
sample_each(mtcars, 'gear', c(2,2,5))
# mpg cyl disp hp drat wt qsec vs am gear carb
# Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
# Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
# Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
# Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
# Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
# Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
# Mazda RX4 Wag1 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
# Hornet Sportabout1 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
# Merc 2801 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
我的任务是创建一个有100个随机数的新文件到一个每行有15个数字的新文件。我可以让它打印出100个随机数,但当我试图让它每行打印15个数字时,程序永远不会完成运行。
问题内容: 雇员表具有ID和NAME列。名称可以重复。我想找出是否至少有一个名称类似“ kaushik%”的行。 因此查询应返回true / false或1/0。 是否可以使用单个查询找到它。如果我们尝试类似 在这种情况下,它不会返回true / false。另外,我们正在遍历表中的所有记录。简单SQL中是否存在这样的方式,使得每当获取满足条件的第一条记录时,它都应停止检查其他记录。还是只能在Pl
我的条件... 字母数字值 只允许使用一个空格或连字符 必须包含至少一个数字 不能以空格或连字符开头或结尾 最少2个字符,最多16个字符,不包括空格/连字符 到现在为止,我准备了正则表达式 它只遗漏了第三点。 测试字符串有效 无效
脚本会计算所有车辆识别号重复的次数 例如,如果VIN编号重复5次,则意味着将有五个零件到达,因此下一步是检查到达列中的VIN,如果有5个“是”值,则 (重复VIN编号)5/5(是”值的数量) 将触发它将[Master]选项卡零件订单列更改为“是”对于特定的VIN编号。 用户将手动更新[零件]选项卡,到达列时使用“是”或留空。(如果空白,则部分未到达。) 请参阅google工作表模板的链接:http
我有一个mySQL查询,它将选择一些饮料并返回关于饮料的基本信息,以及该特定饮料的成分列表,以及该特定饮料的评级。我有三桌酒水,drinks_ratings,drinks_ing 所以,我的问题是,如果我想获得关于含有伏特加的饮料的信息,并且是在高球玻璃杯中,我会运行下面的查询... 它起作用了,只是我的问题是它没有返回所有的成分。例如,如果我返回“randomdrinkname1”,它碰巧有伏特
我有值,我希望它们至少有两个十进制数字,但我不想修剪其余的数字。 是否有构建方法或更优雅的方法来实现这一点? 我不能使用,因为我希望在存在其他小数时保留它们。
问题内容: 我需要找到属于特定条件的任何组的所有行。 我将一个组定义为在“组”列中共享一个值的几行。 相关组必须包含至少一行且Eligible设置为true的行,并且该组中至少有两行在Group或Eligible之外的任何列中必须彼此不同。 样表 所需结果 以下查询使我接近 问题在于它返回的结果太多,因为没有考虑该组中的记录之一是否被标记为合格。 我可能缺少一些简单的东西,但是我无法弄清楚如何检查
我正在尝试从技能作业表中删除一行 以下是我的疑问 但它抛出以下错误; 致命错误:未捕获的异常'异常'消息'您有一个错误在您的SQL语法;检查手册,对应于您的MySQL服务器版本的正确的语法使用附近'skj内连接作业j上<--plhd--0/<--#############################################################################