我有PosixCt格式的大型日期数据框。我的目标很简单:将所有日期更改为一天-2016-05-01-同时保持所有时间相同。如果转换sample$newtime为字符,我将如何继续替换字符串(每行)中的前10个字符?
> class(sample$newtime)
[1] "POSIXct" "POSIXt"
> head(sample)
newtime
1 2016-05-01 02:25:34
2 2016-05-01 02:20:23
3 2016-05-01 02:13:58
4 2016-05-01 02:10:33
5 2016-05-01 02:07:36
6 2016-05-01 02:03:01
> dim(sample)
[1] 92020 1
> range(sample$newtime)
[1] "2015-01-01 01:04:29 MSK" "2016-06-15 12:45:03 MSK"
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,我想通过删除重复项来压缩,但只有某个变量.在下面的例子中,我只想删除重复的user_id时间plan_type = subscriber.所述output的如下所示的采样数据应该如何被冷凝.
我已经尝试unique()但它不会工作,因为可能会有多次出现相同的user_id位置,plan_type = PPG并且此数据应保留.
任何建议不包括子集化然后重新绑定两个数据帧的多个步骤?
> foo
user_id plan_type
16435 6264 subscriber
31518 10050 subscriber
31520 10050 subscriber
7576 11174 subscriber
19744 11186 subscriber
19745 11186 subscriber
46108 20348 subscriber
5293 31641 subscriber
5294 31641 subscriber
5295 31641 PPU
> output
user_id plan_type
16435 6264 subscriber
31520 10050 subscriber
7576 11174 subscriber
19745 11186 subscriber
46108 20348 subscriber
5294 31641 subscriber
5295 31641 PPU
> dput(foo) …Run Code Online (Sandbox Code Playgroud) 我的 ggplot 中有两条独立的回归线,每条线对应一个单独的变量。但是,对应于 的第二条线local没有延伸到整个图形。是否有解决方法或一种方法可以使两个 ablines 在图形区域上均等地延伸?
ggplot(metrics, aes(x=popDensity, y= TPB, color = factor(type))) + geom_point() +theme_minimal() + stat_smooth(method = "lm", se = FALSE) +
geom_label_repel(aes(label= rownames(metrics)), size=3, show.legend = FALSE) +
theme(axis.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=12)) +
labs(x = expression(paste( "Populatin Density ", km^{2})), y = expression(paste("Rating")))+
theme(legend.position="top", legend.direction="horizontal") + theme(legend.title=element_blank())
Run Code Online (Sandbox Code Playgroud)
以下是数据示例:
> dput(metrics)
structure(list(popDensity = c(4308, 27812, 4447, 5334, 4662,
2890, 1689, 481, 4100), TPB = c(2.65, 4.49, 2.37, 2.87, 3.87,
2.95, 1.18, …Run Code Online (Sandbox Code Playgroud) 我还是新手使用的功能data.table.我的目标是使用rle()或rleid()分组多个变量. rle()不是典型的汇总统计.
在我下面的测试数据集中,我的目标是计算连续的重复记录,其中唯一的自行车(bike_id)位于同一位置address,然后按日期分组bike_id.
一些测试数据如下:
> dat
time bike_id address
1: 2017-11-22 15:45:34 1 Waters Rd
2: 2017-11-22 15:50:16 1 Waters Rd
3: 2017-11-22 16:00:03 1 Washington Ave
4: 2017-11-22 16:10:03 1 Washington Ave
5: 2017-11-22 16:20:02 1 Washington Ave
6: 2017-11-22 16:30:02 2 Shady Lane
7: 2017-11-22 16:40:03 2 Comstock Ave
8: 2017-11-22 16:50:02 2 Comstock Ave
9: 2017-11-22 17:00:02 2 Comstock Ave
10: 2017-11-22 17:10:02 2 …Run Code Online (Sandbox Code Playgroud) 我的目标只是计算每天每小时的记录数。我认为可以使用dplyrordata.table包找到一个简单的解决方案:
我的数据集非常简单:
> head(test)
id date hour
1 14869663 2018-01-24 17
2 14869664 2018-01-24 17
3 14869665 2018-01-24 17
4 14869666 2018-01-24 17
5 14869667 2018-01-24 17
6 14869668 2018-01-24 17
Run Code Online (Sandbox Code Playgroud)
我只需要按两个变量(日期和小时)和计数进行分组。本id无所谓。但是,这两种方法在里面dplyr似乎并没有产生想要的结果(输出是一个与输入数据长度相同的数据帧,其中包含数百万条记录)。我在这里做错了什么?
test %>% group_by(date, hour) %>% mutate(count = n())
test %>% add_count(date, hour)
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样
> head(output)
n_records date hour
1 700 2018-01-24 0
2 750 2018-01-24 1
3 730 2018-01-24 2
4 700 2018-01-24 3
5 721 2018-01-24 4
6 753 …Run Code Online (Sandbox Code Playgroud) 我试图用sp包访问线串,类似什么的起点和终点ST_StartPoint,并ST_EndPoint会产生使用psql。
无论我如何尝试访问该行,我都会收到错误或 NULL 值:
> onetrip@lines[[1]][1]
Error in onetrip@lines[[1]][1] : object of type 'S4' is not subsettable
> onetrip@lines@Lines@coords
Error: trying to get slot "Lines" from an object of a basic class ("list") with no slots
> onetrip@lines$Lines
NULL
Run Code Online (Sandbox Code Playgroud)
唯一有效的解决方案是冗长的,需要转换为SpatialLines,我只能轻松地得到第一点:
test = as(onetrip, "SpatialLines")@lines[[1]]
> test@Lines[[1]]@coords[1,]
[1] -122.42258 37.79494
Run Code Online (Sandbox Code Playgroud)
无论是str()在下面和一个简单的plot(onetrip)表演,我的数据帧不为空。
这里的解决方法是什么 - 如何返回线串的起点和终点sp?
我有一个更大的第一条记录的子集SpatialLinesDataFrame:
> str(onetrip)
Formal class 'SpatialLinesDataFrame' [package "sp"] with …Run Code Online (Sandbox Code Playgroud) 我是Presto的新手,无法完全了解如何检查地图中是否存在钥匙。当我运行SELECT查询时,将返回此错误消息:
Key not present in map: element
SELECT value_map['element'] FROM
mytable
WHERE name = 'foobar'
Run Code Online (Sandbox Code Playgroud)
添加AND contains(value_map, 'element')无效
数据类型是一个字符串数组
SELECT typeof('value_map') FROM mytable
Run Code Online (Sandbox Code Playgroud)
退货 varchar(9)
我将如何只选择其中包含“元素”的记录value_map?
我是 Presto SQL 语法的新手,想知道是否存在将行分入n某个范围内的分箱的函数。
例如,我有一个包含 1m 不同整数的表,范围从 1 到 100。我可以做些什么来创建 1 到 100 之间的 20 个 bin(一个 bin 用于 1-5、6-10、11-15 ...等? ) 不使用 20 个单独的CASE WHEN语句?是否有任何标准的 SQL 函数可以执行分箱功能?
任何意见,将不胜感激!
我有一个熊猫数据框,我想在其中比较Var1和Var2
import pandas as pd
data = [['foo', 'foo', 1613030200], \
['foo', 'foo', 1613030300], ['foo', 'bar', 1613030400], \
['foo', 'foo', 1613030500], ['foo', 'foo', 1613030600], ['bar', 'foo', 1613030700],\
['foo', 'foo', 1613030800], ['foo', 'foo', 1613030900], ['foo', 'foo', 1613030985]]
df = pd.DataFrame(data, columns = ['Var1', 'Var2', 'ts'])
df
Run Code Online (Sandbox Code Playgroud)
这个想法是添加一个单独的列,称为group仅当在一段时间之间Var1和Var2一段时间内检测到更改时才会增加 1 (从最早的时间戳开始)。
输出看起来像这样:
Var1 Var2 ts group
0 foo foo 1613030200 0
1 foo foo 1613030300 0
2 foo bar 1613030400 1
3 foo foo …Run Code Online (Sandbox Code Playgroud) 我在 postgres 中有一个表,其中一value列包含字符串数组。我的目标是找到包含以下任何字符串的所有数组: {'cat', 'dog'}
id value
1 {'dog', 'cat', 'fish'}
2 {'elephant', 'mouse'}
3 {'lizard', 'dog', 'parrot'}
4 {'bear', 'bird', 'cat'}
Run Code Online (Sandbox Code Playgroud)
以下查询用于ANY()检查 'dog' 是否等于每个数组中的任何项目,并将正确返回第 1 行和第 3 行:
select * from mytable where 'dog'=ANY(value);
Run Code Online (Sandbox Code Playgroud)
我试图找到一种方法来搜索value字符串数组中的任何匹配项。例如 :
select * from mytable where ANY({'dog', 'cat'})=ANY(value);
Run Code Online (Sandbox Code Playgroud)
应该返回第 1、3 和 4 行。但是,上面的代码会引发错误。有没有办法在这个等式的左边使用 ANY() 子句?如果没有,检查数组中是否有任何字符串的解决方法是value什么?
我有一个psql表调用test三个属性列.第一种类型是整数,第二种是字符,第三种是整数
我的目标是只选择其中的状态已经从记录A或B对C-换句话说,在当前状态C与以前的状态要么A或者B,通过有序id和记录编号.
如何在psql中编写这样的查询?
id state record
1 C 1
1 A 2
1 C 3
1 A 4
1 C 5
1 A 6
1 B 7
2 C 8
2 C 9
2 C 10
2 B 11
2 C 12
2 C 13
2 C 14
3 A 15
3 C 16
3 B 17
3 A 18
3 A 19
3 …Run Code Online (Sandbox Code Playgroud) 我在PrestoSQL中有如下表:
test
id value timestamp
1 foo blue 2019-10-17 17:42:52
2 foo <NA> 2019-10-17 17:43:52
3 foo <NA> 2019-10-17 17:44:52
4 foo red 2019-10-17 17:45:52
5 foo <NA> 2019-10-17 17:46:52
6 bar <NA> 2019-10-17 17:47:52
7 bar green 2019-10-17 17:48:52
8 bar <NA> 2019-10-17 17:49:52
9 bar <NA> 2019-10-17 17:50:52
10 bar <NA> 2019-10-17 17:51:52
Run Code Online (Sandbox Code Playgroud)
我的目标是在值出现之后填写这些值value,例如:
output
id value timestamp
1 foo blue 2019-10-17 17:42:52
2 foo blue 2019-10-17 17:43:52
3 foo blue 2019-10-17 17:44:52
4 foo red …Run Code Online (Sandbox Code Playgroud)