【问题标题】:how to merge numbers from one column into the second column to create a unique numeric value如何将一列中的数字合并到第二列以创建唯一的数值
【发布时间】:2017-02-22 00:32:58
【问题描述】:

我正在尝试将第一列中的 ID 与第二列中的数字合并,以创建唯一 ID。这是我的开始

1002   1    2
1002   2    0
1002   3    0
1003   1    1
1003   4    0
1003   2    1
1004   3    0

这就是我想要实现的目标

1002   1002.1    2
1002   1002.2    0
1002   1002.3    0
1003   1003.1    1
1003   1003.4    0
1003   1003.2    1
1004   1004.3    0

这是我的尝试

data = matrix(scan("file.txt", what = "", sep = ""), ncol = 3, byrow = T)
data = matrix(paste(data[,1], data[,2], sep = "."), ncol = 1, byrow = T)

【问题讨论】:

  • tidyr::unite(df, V1_V2, V1, V2)
  • @alistaire 这可行,但是需要一个句点而不是下划线..谢谢!
  • tidyr::unite(df, V1.V2, V1, V2, sep = '.')

标签: r matrix merge rscript


【解决方案1】:

给定以下数据

df <- data.frame(
    x = c(1002, 1002, 1002, 1003, 1003, 1003, 1004),
    y = c(1, 2, 3, 1, 4, 2, 3),
    z = c(2, 0, 0, 1, 0, 1, 0)
)
print(df)

##      x y z
## 1 1002 1 2
## 2 1002 2 0
## 3 1002 3 0
## 4 1003 1 1
## 5 1003 4 0
## 6 1003 2 1
## 7 1004 3 0

您可以使用transformpaste0 执行以下操作

df <- transform(df, y = paste0(x, ".",y))
print(df)
##      x      y z
## 1 1002 1002.1 2
## 2 1002 1002.2 0
## 3 1002 1002.3 0
## 4 1003 1003.1 1
## 5 1003 1003.4 0
## 6 1003 1003.2 1
## 7 1004 1004.3 0

【讨论】:

    【解决方案2】:

    试试这个简单(假设您在数据框 df 中有 3 列):

    cbind.data.frame(ID=paste(df[,1], df[,2], sep='.'), Val=df[,3])
    
          ID Val
    1 1002.1   2
    2 1002.2   0
    3 1002.3   0
    4 1003.1   1
    5 1003.4   0
    6 1003.2   1
    7 1004.3   0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-12
      • 2014-06-27
      • 2013-03-26
      • 2020-12-26
      相关资源
      最近更新 更多