Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将行和值复制到R中的列时出现问题_R_Duplicates_Data.table - Fatal编程技术网

将行和值复制到R中的列时出现问题

将行和值复制到R中的列时出现问题,r,duplicates,data.table,R,Duplicates,Data.table,我需要复制数据表中的行,并将值解析为列 Table: St Cty Name Crp Plan Ins_ID Yld_ID 13 19 Ber 75 30 NA NA 22273028 21942993 22209124 22213153 22086558 22282068 Output: St Cty Name Crp Plan Ins_ID Yld_ID 13 19 Ber 75 30 222730

我需要复制数据表中的行,并将值解析为列

Table:     
St  Cty Name Crp  Plan Ins_ID  Yld_ID 
13  19  Ber  75   30   NA      NA    


22273028 21942993 22209124 22213153 22086558 22282068  

Output:
St  Cty Name Crp  Plan Ins_ID        Yld_ID 
13  19  Ber  75   30   22273028      NA
13  19  Ber  75   30   21942993      NA
13  19  Ber  75   30   22209124      NA
13  19  Ber  75   30   22213153      NA
13  19  Ber  75   30   22086558      NA
13  19  Ber  75   30   22282068      NA

如何使用
数据在R中实现这一点。表

这是否实现了您想要的

dta <- structure(list(St = 13L, Cty = 19L, Name = "Ber", Crp = 75L, 
    Plan = 30L, Ins_ID = NA, Yld_ID = NA), class = "data.frame",
    row.names = c(NA, -1L))
dta <- data.table(dta)
Ins_ID <- c(22273028, 21942993, 22209124, 22213153, 22086558, 22282068)
dta.new <- data.table(dta[, 1:5], Ins_ID, Yld_ID=dta[, 7])
dta.new
#    St Cty Name Crp Plan   Ins_ID Yld_ID.Yld_ID
# 1: 13  19  Ber  75   30 22273028            NA
# 2: 13  19  Ber  75   30 21942993            NA
# 3: 13  19  Ber  75   30 22209124            NA
# 4: 13  19  Ber  75   30 22213153            NA
# 5: 13  19  Ber  75   30 22086558            NA
# 6: 13  19  Ber  75   30 22282068            NA

dta在给定的规范范围内,问题变得非常容易

ins_id_vector <- c(22273028, 21942993, 22209124, 22213153, 22086558, 22282068)  

expanded.table <- data.frame(
  St = Table$St,
  Cty = Table$Cty,
  Name = Table$Name,
  Crp = Table$Crp,
  Plan = Table$Plan,
  Ins_ID = ins_id_vector,
  Yld_ID = Table$Yld_ID
)

ins\u id\u vector我们可以根据向量的长度重复
数据表的行,并将向量分配给列

library(data.table)

setDT(dt)
ins_id <- c(22273028,21942993,22209124,22213153,22086558,22282068)
dt <- dt[rep(1,length(ins_id)), ]
dt[, Ins_ID := ins_id]

dt
#   St Cty Name Crp Plan   Ins_ID Yld_ID
#1: 13  19  Ber  75   30 22273028     NA
#2: 13  19  Ber  75   30 21942993     NA
#3: 13  19  Ber  75   30 22209124     NA
#4: 13  19  Ber  75   30 22213153     NA
#5: 13  19  Ber  75   30 22086558     NA
#6: 13  19  Ber  75   30 22282068     NA
库(data.table)
setDT(dt)

那一行是数据帧中多行的一部分吗?Ins_ID列表位于何处,它是数据帧中的列还是数据帧外的变量?它是要解析的字符串的向量吗?所有这些都会影响解决方案。向量中的数值来自不同的表。是的,我在这张桌子上只有一行。要复制的行数应等于数字向量的长度。在本例中为6行,因为数字向量中有6个数字。谢谢,但我更喜欢data.table解决方案谢谢,但我更喜欢data.table解决方案
dt <- structure(list(St = 13L, Cty = 19L, Name = structure(1L, .Label = "Ber", 
class = "factor"), Crp = 75L, Plan = 30L, Ins_ID = NA, Yld_ID = NA),
class = "data.frame", row.names = c(NA, -1L))