你如何根据因子变量水平的观察数量进行子集化?我有一个包含1,000,000行和近3000个级别的数据集,我想用更少的200个观察值来对这些级别进行分组.
data <- read.csv("~/Dropbox/Shared/data.csv", sep=";")
summary(as.factor(data$factor)
10001 10002 10003 10004 10005 10006 10007 10009 10010 10011 10012 10013 10014 10016 10017 10018 10019 10020
414 741 2202 205 159 591 194 678 581 774 778 738 1133 997 381 157 522 6
10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038
398 416 1236 797 943 386 446 542 508 309 452 482 425 272 261 291 145 598
10039 10040 …Run Code Online (Sandbox Code Playgroud) 我有一个包含多个列的数据框,其中一个(称为:drift.N)是一系列TRUE和FALSES.我如何将"TRUE"行与"FALSE"行分开,或者让R告诉我哪些行漂移.N =="TRUE"?
我想使用字符串执行逻辑操作(是的,我想这样做)
a = data.frame(x=c(1,2,3,4),y=c(11,12,13,14))
logical_text = "a$x!=2 & a$y!=14"
a
> a
x y
1 1 11
2 2 12
3 3 13
4 4 14
Run Code Online (Sandbox Code Playgroud)
我希望使用如下字符串
a[logical_text,]
> a[logical_text,]
x y
NA NA NA
Run Code Online (Sandbox Code Playgroud)
为了得到相同的结果:
a[a$x!=2 & a$y!=14,]
> a[a$x!=2 & a$y!=14,]
x y
1 1 11
3 3 13
Run Code Online (Sandbox Code Playgroud) 我有一个包含三个变量(ACC和类型和ID)的数据框,其中ACC指的是决策的准确性,类型是指30种不同的决策类型,对于参与者的每种决策类型重复15次,ID指的是对参与者.它看起来像这样:
ID ACC Type
1 1 1
1 0 3
1 1 10
etc...
2 1 5
2 0 13
2 0 11
etc...
Run Code Online (Sandbox Code Playgroud)
我的目标是分析参与者中每种决策类型的准确性,并将数据合并到数据框中.如:
ID ACC_Type1 ACC_Type2 […] ACC_Type30
1 70 65 87
2 65 50 90
etc...
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够通过单独分组决策类型来计算,但是,我正在寻找一种更智能的方法来避免单独键入决策类型值:
library(data.table)
library(plyr)
dt <- data.table(d,key="Type")
dt_Type1<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==1),mean))
dt_Type2<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==2),mean))
[]
dt_Type30<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==30),mean))
total <- merge(dt_Type1,dt_Type2 […] Type30,by="ID")
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
我有一个数据框,其中包含一系列与账单ID相对应的六位数字.以奇数开头的ID对应于房屋投票,而偶数编号对应于参议院投票.例如,我的变量看起来像这样:
var <- runif(20, 100000, 999999)
Run Code Online (Sandbox Code Playgroud)
我坚持试图找出一个grep()代码,我可以使用subset()命令来分隔以偶数开头的值和以奇数开头的值.有没有人有什么建议?谢谢!
尝试从Stata过渡到R是令人兴奋和具有挑战性的,但我仍在R中努力的一个领域是数据探索,然后是后续的变量创建.具体来说,如何
计算变量的值(Stata的计数命令)
count if var 2==3
/* counts the number of observations that have a value of 3 on var2 */
Run Code Online (Sandbox Code Playgroud)列出符合条件的观察结果(Stata's if qualifier)
list id if var7 < 8
/*lists the ID of observations with a value less than 8 on var7 */
Run Code Online (Sandbox Code Playgroud)按分组变量制表(Stata的bysort命令)
bysort var3: tab1 var2 var9 if var8=2 | var1 !=11
/* create a two-way frequency table for those observations of var2 and var9 where
var8 is 2 or var1 isn't 11 …Run Code Online (Sandbox Code Playgroud)这是我的数据的小代表:
Team <- rep(c("ind", "sas", "ind", "sas"),c(4,8,2,4))
Player <- c("Paul George", "David West", "Roy Hibbert",
"Paul George", "Tim Duncan", "Manuel Ginobili",
"Tony Parker", "Boris Diaw","Danny Green",
"Kawhi Leonard", "Matt Bonner", "Patty Mills",
"George Hill", "C.J.Miles","Tim Duncan",
"Manuel Ginobili", "Tony Parker", "Boris Diaw")
Team_PTS <- c(101,101,101,98,105,105,105,105,
105,105,105,105,98,98,89,89,89,128)
Date <- as.Date(c("2015-05-14", "2015-05-14", "2015-05-14",
"2015-05-16","2015-05-15", "2015-05-15", "2015-05-15",
"2015-05-15","2015-05-15", "2015-05-15", "2015-05-15",
"2015-05-15","2015-05-16","2015-05-16","2015-05-29",
"2015-05-29","2015-05-29","2015-06-03"))
Team_Gamenumber <- rep(c(1,2,1,2,2,3),c(3,1,8,2,3,1))
df <- data.frame(Team,Player,Team_PTS,Date, Team_Gamenumber)
df
Team Player Team_PTS Date Team_Gamenumber Desired_output
1 ind Paul George 101 2015-05-14 1 …Run Code Online (Sandbox Code Playgroud) 我想基于两列ColA和ColB(下面)创建一个大型数据框的子集.对于ColA中的每个变量(例如A,B,C ......),我想提取与ColB中第一个变量的每次出现相对应的行.因此DF1:
ColA ColB ColC
A Red 7thing
A Red OneBot
A Blue BotOne
B Green Thing7
B Green Twosies
B Green Square
B Yellow Circle
B Yellow Polygon
B Purple Triangle
B White Octagon
C Orange Cube
C Black Line
Run Code Online (Sandbox Code Playgroud)
将成为DF2:
ColA ColB ColC
A Red 7thing
A Red OneBot
B Green Thing7
B Green Twosies
B Green Square
C Orange Cube
Run Code Online (Sandbox Code Playgroud)
我不关心ColC中的重复项,并且ColB中变量的出现次数没有模式.我发现的相关子集策略侧重于提取独特的案例,但我既没有遇到也没有能够设计出允许选择第一个变量类型的所有事件的方法,并且会感激一些帮助.
我试过了
DF2 <- DF1[match(unique(DF1$ColB), DF1$ColB),]
Run Code Online (Sandbox Code Playgroud)
...当变量内容已知时(例如,子集在R中的数据帧中首先出现n个特定值的子集),并且这些子集化看起来不合适.
我想通过删除满足或不满足某个条件的列来对数据框进行子集化.例如,给出以下数据:
df <- data.frame(w = c('a', 'b', 'c'),
x = c(1, 0, 0),
y = c(0, 1, 0),
z = c(0, 0, 1))
Run Code Online (Sandbox Code Playgroud)
这使:
w x y z
a 1 0 0
b 0 1 0
c 0 0 1
Run Code Online (Sandbox Code Playgroud)
我想在对行进行子集化后删除包含0的列.例如:
df %>% filter(., w == 'a')
Run Code Online (Sandbox Code Playgroud)
生产:
w x y z
a 1 0 0
Run Code Online (Sandbox Code Playgroud)
然后我想减少到:
x
1
Run Code Online (Sandbox Code Playgroud)
我希望使用这个dplyr,因此下一步应该在filter命令之后进行管道传输.我尝试过summarise与apply一起使用,但是没有用.
我最近一直致力于迭代算法,每次迭代都n依赖于迭代n-1.在每次迭代期间,大部分计算时间是通过子设置和/或替换向量,列表或data.tables(N> 10 ^ 6)的元素来获得的.
我最近遇到了Rcpp并且稍微玩了一下我发现更换k向量或列表的元素可以加速两到三个数量级(下面几个基准测试).
但是,当在for和while循环中使用Rcpp子集代码时,R似乎变得不稳定,并且会话在随机点中止而没有出现什么问题.
我的问题: 这种使用Rcpp是合法的还是会导致我不知道的问题?
下面是我使用的Rcpp代码和一些基准测试.总的来说,算法应该将替换函数调用~55亿次,子集函数调用~500亿次.
注意,使用Rcpp替换列表和双向量的元素更快,而对于整数向量,基本R解是优选的(基准1); 数据表是替换元素的好选项,但如果必须重复子集以访问其元素,则向量方法要快得多(基准2).
功能:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
void assign_list(List x, int k, NumericVector new_element){
x[k-1] = new_element;
}
// [[Rcpp::export]]
void assign_dbl(NumericVector x, int k, double y){
x[k-1] = y;
}
// [[Rcpp::export]]
void assign_int(IntegerVector x, int k, int y){
x[k-1] = y;
}
Run Code Online (Sandbox Code Playgroud)
基准:
输入
set.seed(747474)
int <- 1:10^7
dou <- rnorm(10^7, …Run Code Online (Sandbox Code Playgroud)