标签: subset

基于因子变量中的观察数量的子集化

你如何根据因子变量水平的观察数量进行子集化?我有一个包含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)

r subset r-factor

0
推荐指数
1
解决办法
4088
查看次数

返回具有特定值的数据框的所有行

我有一个包含多个列的数据框,其中一个(称为:drift.N)是一系列TRUE和FALSES.我如何将"TRUE"行与"FALSE"行分开,或者让R告诉我哪些行漂移.N =="TRUE"?

r subset dataframe

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

使用逻辑字符串子集化data.frame

我想使用字符串执行逻辑操作(是的,我想这样做)

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)

r character subset dataframe

0
推荐指数
1
解决办法
703
查看次数

如何动态子集值并计算均值

我有一个包含三个变量(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)

任何帮助表示赞赏!

aggregate r subset plyr

0
推荐指数
1
解决办法
1186
查看次数

模式仅匹配R中字符串中的第一个数字

我有一个数据框,其中包含一系列与账单ID相对应的六位数字.以奇数开头的ID对应于房屋投票,而偶数编号对应于参议院投票.例如,我的变量看起来像这样:

var <- runif(20, 100000, 999999) 
Run Code Online (Sandbox Code Playgroud)

我坚持试图找出一个grep()代码,我可以使用subset()命令来分隔以偶数开头的值和以奇数开头的值.有没有人有什么建议?谢谢!

grep r subset pattern-matching

0
推荐指数
1
解决办法
337
查看次数

(从Stata到R)数据博览和变量创建:count,list,bysort,egen

尝试从Stata过渡到R是令人兴奋和具有挑战性的,但我仍在R中努力的一个领域是数据探索,然后是后续的变量创建.具体来说,如何

  1. 计算变量的值(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)
  2. 列出符合条件的观察结果(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)
  3. 按分组变量制表(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)

sorting r subset data-mining stata

0
推荐指数
1
解决办法
774
查看次数

移动平均线具有多个GroupBy

这是我的数据的小代表:

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)

group-by r subset moving-average dplyr

0
推荐指数
1
解决办法
100
查看次数

列中所有第一个变量出现的R子集行

我想基于两列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个特定值的子集),并且这些子集化看起来不合适.

r subset dataframe

0
推荐指数
1
解决办法
349
查看次数

根据某些值的存在/不存在从数据框中删除列

我想通过删除满足或不满足某个条件的列来对数据框进行子集化.例如,给出以下数据:

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一起使用,但是没有用.

r subset multiple-columns dplyr

0
推荐指数
1
解决办法
160
查看次数

在迭代算法中使用Rcpp加速替换列表和向量的元素是否合法?

上下文

我最近一直致力于迭代算法,每次迭代都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)

c++ r subset bigdata rcpp

0
推荐指数
1
解决办法
156
查看次数