r - 使用R从不同位置的多列中提取信息
问题描述
我有一个大约的数据框。26,000 个条目。数据框有一个 ID 列,ID 用“;”分隔 并且多个值列也用“;”分隔。它看起来像这样:
df <- data.frame (ID = c("sample1;sample2;sample3", "sample3", "sample3;sample4;sample5;sample6"),
value_1 = c("10;20;30", "30", "30;40;50;60"),
value_2 = c("130", "130", "130"))
问题是 ID 条目的数量和位置以及相应的值在一行内是恒定的,但在各行中它们是不同的。此外,还有一些列(例如 value_2),其中的条目应保持不变。有没有一种简单的方法可以降低数据集的复杂性?谢谢
解决方案
我们可以用separate_rows
library(dplyr)
library(tidyr)
df %>%
separate_rows(ID, value_1, convert = TRUE)
-输出
# A tibble: 8 x 3
# ID value_1 value_2
# <chr> <int> <chr>
#1 sample1 10 130
#2 sample2 20 130
#3 sample3 30 130
#4 sample3 30 130
#5 sample3 30 130
#6 sample4 40 130
#7 sample5 50 130
#8 sample6 60 130
或使用cSplit
library(splitstackshape)
cSplit(df, c("ID", "value_1"), ";", "long")
推荐阅读
- mongodb - 如何使用 loopback4 在 MonogoDB 数据库中创建用户
- python - math.sqrt 导致 TypeError:'float' 对象不能被解释为整数
- android - 如何在提示通知中隐藏操作按钮
- java - 如何使用带有IP地址的rest客户端连接到elasticsearch服务器
- python - 向 xarray.DataArray 添加新坐标
- clojure - 如何以同步方式迭代 Clojure 中两个不同列表中的项目?
- python - 如何从python中另一列(连续数据)的范围数据中提取一列的平均值、最大值和最小值
- c# - 带有名称的元组数组 - 可能吗?
- android - 无法将 android.support.v7.widget.Toolbar 与 android.useAndroidX=true 一起使用
- google-chrome - 如何针对 HSTS 标头检查 wesbites 列表?