标签: data-manipulation

如何使用R在多列数据帧上运行tapply()?

我有一个如下数据框:

a   b1  b2  b3  b4  b5  b6  b7  b8  b9
D   4   6   9   5   3   9   7   9   8
F   7   3   8   1   3   1   4   4   3
R   2   5   5   1   4   2   3   1   6
D   9   2   1   4   3   3   8   2   5
D   5   4   3   1   6   4   1   8   3
R   3   7   9   1   8   5   3   4   2
D   4   1   8   2   6   3   2   7 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation

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

Vim搜索和替换,添加常量

我知道这是一个很长的镜头,但我有一个巨大的文本文件,我需要将一个给定的数字添加到符合某些标准的其他数字.

例如.

identifying text 1.1200
identifying text 1.1400
Run Code Online (Sandbox Code Playgroud)

我想改变它(通过添加说1.15)

identifying text 2.2700
identifying text 2.2900
Run Code Online (Sandbox Code Playgroud)

通常我会在Python中执行此操作,但它是在Windows机器上,我无法安装太多东西.我有Vim虽然:)

regex vim data-manipulation

16
推荐指数
2
解决办法
5234
查看次数

R中时间序列数据的滑动时间间隔

我正在尝试为不规则的时间序列数据集提取有趣的统计数据,但很难找到适合该工作的正确工具.可以很容易地找到用于操作定期采样时间序列或基于索引的系列的工具,尽管我对我正在尝试解决的问题没有太多运气.

首先,可重现的数据集:

library(zoo)
set.seed(0)
nSamples    <- 5000
vecDT       <- rexp(nSamples, 3)
vecTimes    <- cumsum(c(0,vecDT))
vecDrift    <- c(0, rnorm(nSamples, mean = 1/nSamples, sd = 0.01))
vecVals     <- cumsum(vecDrift)
vecZ        <- zoo(vecVals, order.by = vecTimes)
rm(vecDT, vecDrift)
Run Code Online (Sandbox Code Playgroud)

假设时间以秒为单位.系列中有将近1700秒(仅为30分钟),在此vecZ期间有5001个参赛作品.(注意:我尝试使用xts,但xts似乎需要日期信息,而且当不相关时我宁愿不使用特定的日期.)

我的目标如下:

  • 确定每个点前3分钟和3分钟后的值的索引.由于时间是连续的,我怀疑任何两点相距3分钟.我想要找到的是在给定点之前至少3分钟,至少3分钟之后的点,即类似下面的点(伪代码):

    backIX(t, vecZ, tDelta) = min{ix in length(vecZ) : t - time(ix) < tDelta} forwardIX(t, vecZ, tDelta) = min{ix in length(vecZ) : time(ix) - t > tDelta}

    所以,3分钟,tDelta = 180.如果t=2500,则结果为forwardIX()3012(即时间(vecZ)[2500]为860.1462,时间(vecZ)[3012]为1040.403,或仅超过180秒),输出为backwardIX() …

r time-series data-manipulation

15
推荐指数
1
解决办法
2808
查看次数

通过row.names子集化矩阵

我有一个矩阵与以下row.names:

"X1"   "X5"   "X33"  "X37"  "X52"  "X566"
Run Code Online (Sandbox Code Playgroud)

现在我想只选择与列表条目匹配的行,例如:

include_list <- c("X1", "X5", "X33")
Run Code Online (Sandbox Code Playgroud)

我想我会做这样的事情:

data.subset <- subset(data, row.names == include_list)
Run Code Online (Sandbox Code Playgroud)

但是,这个特定的代码似乎没有完成这项工作.如何以这种方式执行子集化?

r data-manipulation

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

如何用dplyr :: filter()删除观察组

对于以下数据

ds <- read.table(header = TRUE, text ="
id year attend
1 2007      1
1 2008      1
1 2009      1
1 2010      1
1 2011      1
8 2007      3
8 2008     NA
8 2009      3
8 2010     NA
8 2011      3
9 2007      2
9 2008      3
9 2009      3
9 2010      5
9 2011      5
10 2007     4
10 2008     4
10 2009     2
10 2010    NA
10 2011    NA
")
ds<- ds %>% dplyr::mutate(time=year-2000)
print(ds)
Run Code Online (Sandbox Code Playgroud)

如何编写dplyr :: filter()命令以仅保留没有单个NA的id?所以只有ids …

r data-manipulation subset dplyr

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

tidyr中的隐式排序:: spread和dplyr :: summarize

我的数据是有序观察,我希望在进行操作时尽可能保持顺序.

得到这个问题的答案,我把"B"放在数据框中的"A"之前.得到的宽数据按"名称"列排序,即首先是"A",然后是"B".

df = data.frame(name=c("B","B","A","A"),
                group=c("g1","g2","g1","g2"),
                V1=c(10,40,20,30),
                V2=c(6,3,1,7))

gather(df, Var, Val, V1:V2) %>% 
unite(VarG, Var, group) %>% 
spread(VarG, Val)

  name V1_g1 V1_g2 V2_g1 V2_g2
1    A    20    30     1     7
2    B    10    40     6     3
Run Code Online (Sandbox Code Playgroud)

有没有办法保持原始订单?像这样:

  name V1_g1 V1_g2 V2_g1 V2_g2
1    B    10    40     6     3
2    A    20    30     1     7
Run Code Online (Sandbox Code Playgroud)

04/02编辑:我刚刚发现了dplyr::summarise排序.arrange(name, df$name)仍然可以恢复订单.但我想知道从包装设计中是否需要额外的分类?

df %>% 
  group_by(name) %>% 
  summarise(n()) %>% 

  name n()
1    A   2
2    B   2
Run Code Online (Sandbox Code Playgroud)

r data-manipulation dplyr tidyr

14
推荐指数
2
解决办法
5966
查看次数

如何找到两个JavaScript对象数组之间的差异?

我有两个JavaScript数组orig(原始对象数组)和update(更新的对象的orig数组),它们具有相同的长度并包含对象,我想输出每对对象之间的差异.

例:

var orig = [{enabled:"true", name:"Obj1", id:3},{enabled:"true", name:"Obj2", id:4}]; 

var update = [{enabled:"true", name:"Obj1", id:3}, {enabled:"true", name:"Obj2-updated", id:4}];
Run Code Online (Sandbox Code Playgroud)

输出应该是: name:"Obj2-updated"

我实现了一些东西,但它需要优化......

for(var prop=0; prop<orig.length; prop++) {
  for(prop=0; prop<update.length; prop++) {
    if(orig[prop].enabled != update.enabled) { console.log(update.enabled) }
    if(orig[prop].name != update[prop].name) { console.log(update[prop].name) }
    if(orig[prop].id != update[prop].id) { console.log(update[prop].id) }
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays data-manipulation javascript-objects difference

14
推荐指数
2
解决办法
7027
查看次数

在dplyr谓词中将字符串作为参数传递

我希望能够为dplyr动词定义参数

condition <- "dist > 50"
Run Code Online (Sandbox Code Playgroud)

然后在dplyr函数中使用这些字符串:

require(ggplot2)
ds <- cars
ds1 <- ds %>%
   filter (eval(condition))
ds1
Run Code Online (Sandbox Code Playgroud)

但它会引发错误

Error: filter condition does not evaluate to a logical vector. 
Run Code Online (Sandbox Code Playgroud)

代码应评估为:

  ds1<- ds %>%
     filter(dist > 50)
  ds1
Run Code Online (Sandbox Code Playgroud)

导致 :

DS1

   speed dist
1     14   60
2     14   80
3     15   54
4     18   56
5     18   76
6     18   84
7     19   68
8     20   52
9     20   56
10    20   64
11    22   66
12 …
Run Code Online (Sandbox Code Playgroud)

string r data-manipulation parameter-passing dplyr

12
推荐指数
2
解决办法
5409
查看次数

不使用Excel标准化(重新格式化)Tableau的交叉表数据

输入数据采用"标准化"格式而非交叉表时,Tableau通常效果最佳.这也称为从"宽格式"转换为"长格式".

也就是说,转换自:

在此输入图像描述

至:

在此输入图像描述

Tableau 为Excel用户提供了"重塑工具",但如果您没有Excel,则会遇到困难.

那么如何在不使用Excel的情况下将电子表格转换为此格式?

data-manipulation normalization google-sheets reshape tableau-api

12
推荐指数
1
解决办法
5922
查看次数

REAL()只能应用于'数字',而不能应用于'整数'

虽然问题似乎是重复的,但我发布了这个问题,因为他们没有提供解决方案并且与我的问题相关.

dtrain<-xgb.DMatrix(data=data.matrix(train),label=data[t,c(31)])
Run Code Online (Sandbox Code Playgroud)

xgb.DMatrix中的错误(data = data.matrix(train),label = data [t,c(31)]):REAL()只能应用于'numeric'而不是'integer'

> class(data[t,c(31)])
[1] "integer"

> str(train)
Run Code Online (Sandbox Code Playgroud)

"

data.frame':    1965 obs. of  30 variables:
 $ having_IP_Address          : int  2 2 2 2 2 2 2 2 2 2 ...
 $ URL_Length                 : int  3 3 3 3 3 3 3 3 3 3 ...
 $ Shortining_Service         : int  1 1 1 1 1 1 1 1 1 1 ...
 $ having_At_Symbol           : int  1 1 1 1 1 1 1 1 1 1 …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation xgboost

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