小编rct*_*oni的帖子

通过(行)对的组合进行过滤

我有一个长格式的数据帧,我想根据值的唯一组合过滤对.我有一个如下所示的数据集:

id <- rep(1:4, each=2)
type <- c("blue", "blue", "red", "yellow", "blue", "red", "red", "yellow")
df <- data.frame(id,type)
df
  id   type
1  1   blue
2  1   blue
3  2    red
4  2 yellow
5  3   blue
6  3    red
7  4    red
8  4 yellow
Run Code Online (Sandbox Code Playgroud)

假设每个id都是一个响应者,type是一种治疗组合.个人1看到两个物体,都是蓝色的; 个人2看到一个红色物体和一个黄色物体; 等等.

例如,如何看到那些看到"红色"和"黄色"组合的东西?如果我按"红色"和"黄色"组合过滤,结果数据集应如下所示:

  id   type
3  2    red
4  2 yellow
7  4    red
8  4 yellow
Run Code Online (Sandbox Code Playgroud)

它应该保留2号和4号受访者(只有那些看到"红色"和"黄色"组合的受访者).请注意,它不会保留第3号受访者,因为她看到"蓝色"和"红色"(而不是"红色"和"黄色").我该怎么做呢?

一种解决方案是将数据集重新整形为宽格式,按列过滤,然后重新进行重新打包.但我相信还有另一种方法可以在不重塑数据集的情况下完成.任何的想法?

r subset dplyr tidyr tidyverse

3
推荐指数
1
解决办法
645
查看次数

SF:从 UTM 到纬度/经度

我有一组 UTM 度量点,我想使用 sf 环境将其转换为纬度和经度小数点。

我的数据集如下所示:

df <- data.frame(longitude=c(4585434,4588904,4586694),
                 latitude=c(430060.8,430960.8,432427.2),
                 street=c("74 JOSEP SERRANO", "30 LLOBERA","4 SANT ILDEFONS"),
                 number=c(45,68,34))
Run Code Online (Sandbox Code Playgroud)

我只能在sp框架下做到这一点。

dfevpo <- SpatialPoints(df[, c("longitude","latitude")], proj4string=CRS("+proj=utm +zone=10")) 
longlats <- spTransform(dfevpo, CRS("+proj=longlat")) #transform

longlats.df <- as.data.frame(longlats)
longlats.df$.id <- as.numeric(rownames(longlats.df)) 
Run Code Online (Sandbox Code Playgroud)

但是,生成的longlats.df数据集并不包含原始数据集中的所有变量。我猜顺序是一样的,我可以将它与原来的合并。但是,有更直观的方法吗?理想情况下,我想使用 sf。

r r-sf

3
推荐指数
1
解决办法
2794
查看次数

标签 统计

r ×2

dplyr ×1

r-sf ×1

subset ×1

tidyr ×1

tidyverse ×1