Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.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为单位),使用dplyr创建列_R_Dplyr_Data Manipulation - Fatal编程技术网

基于另一列的值和频率(以R为单位),使用dplyr创建列

基于另一列的值和频率(以R为单位),使用dplyr创建列,r,dplyr,data-manipulation,R,Dplyr,Data Manipulation,当我想到一个更好的标题时,我将很快编辑帖子名称,但目前,下面的一个简短示例突出了我正在努力解决的问题: dput(mydf) structure(list(gameID = c("34", "34", "34", "34", "34", "25", "25", "25")), class = "data.frame", row.names = c(NA, -8L)) mydf gameID 1 34 2 34 3 34 4 34 5 34 6

当我想到一个更好的标题时,我将很快编辑帖子名称,但目前,下面的一个简短示例突出了我正在努力解决的问题:

dput(mydf)
structure(list(gameID = c("34", "34", "34", "34", "34", "25", 
"25", "25")), class = "data.frame", row.names = c(NA, -8L))

mydf
    gameID
1     34
2     34
3     34
4     34
5     34
6     25
7     25
8     25
(包含garbocCol只是为了使dataframe的列数大于1,否则请忽略。)这感觉应该是一个相当简单的数据操作问题。我想创建一个新列,它只是粘贴了gameID计数的gameID列。因此,我寻求以下产出:

mydf
  gameID    newCol
1     34     34-1
2     34     34-2
3     34     34-3
4     34     34-4
5     34     34-5
6     25     25-1
7     25     25-2
8     25     25-3
gameID列已经是一个字符,而newCol最好也是字符类型。我在一个长的ish dplyr链中工作,并试图使以下各项正常工作:

mydf <- mydf %>% 
  dplyr::mutate(newCol = paste0(gameID, '-', {what goes here}))
mydf%
dplyr::mutate(newCol=paste0(gameID,'-',{这里发生了什么}))

我可以很容易地使用for循环来实现这一点,但是dplyr解决方案会更好。

如果我们需要使用sequence
粘贴
,请使用
行号()获取序列。
按“gameID”和
粘贴
分组以创建“newCol”

mydf %>%
    group_by(gameID) %>%
    mutate(newCol = paste(gameID, row_number(), sep = '-'))
# A tibble: 8 x 3
# Groups:   gameID [2]
#  gameID garboCol newCol
#  <fct>     <dbl> <chr> 
#1 34            1 34-1  
#2 34            2 34-2  
#3 34            3 34-3  
#4 34            4 34-4  
#5 34            5 34-5  
#6 25            6 25-1  
#7 25            7 25-2  
#8 25            8 25-3  
或与
胶水一起使用(从
胶水


如果我们需要使用sequence
粘贴
,请使用按“gameID”分组的
行编号()获取序列,然后使用
粘贴
创建“newCol”

mydf %>%
    group_by(gameID) %>%
    mutate(newCol = paste(gameID, row_number(), sep = '-'))
# A tibble: 8 x 3
# Groups:   gameID [2]
#  gameID garboCol newCol
#  <fct>     <dbl> <chr> 
#1 34            1 34-1  
#2 34            2 34-2  
#3 34            3 34-3  
#4 34            4 34-4  
#5 34            5 34-5  
#6 25            6 25-1  
#7 25            7 25-2  
#8 25            8 25-3  
或与
胶水一起使用(从
胶水


这可能就是你的想法

mydf %>% 
 group_by(gameID) %>% 
 dplyr::mutate(newCol = paste0(gameID, '-', seq_along(gameID)))
# A tibble: 8 x 3
# Groups:   gameID [2]
#  gameID garboCol newCol
#  <fct>     <dbl> <chr> 
#1 34            1 34-1  
#2 34            2 34-2  
#3 34            3 34-3  
#4 34            4 34-4  
#5 34            5 34-5  
#6 25            6 25-1  
#7 25            7 25-2  
#8 25            8 25-3 
mydf%>%
组别依据(配子ID)%>%
dplyr::mutate(newCol=paste0(gameID,'-',seq_沿(gameID)))
#一个tibble:8x3
#组:gameID[2]
#配子甘草
#         
#1 34            1 34-1  
#2 34            2 34-2  
#3 34            3 34-3  
#4 34            4 34-4  
#5 34            5 34-5  
#6 25            6 25-1  
#7 25            7 25-2  
#8 25            8 25-3 

这可能就是您的想法

mydf %>% 
 group_by(gameID) %>% 
 dplyr::mutate(newCol = paste0(gameID, '-', seq_along(gameID)))
# A tibble: 8 x 3
# Groups:   gameID [2]
#  gameID garboCol newCol
#  <fct>     <dbl> <chr> 
#1 34            1 34-1  
#2 34            2 34-2  
#3 34            3 34-3  
#4 34            4 34-4  
#5 34            5 34-5  
#6 25            6 25-1  
#7 25            7 25-2  
#8 25            8 25-3 
mydf%>%
组别依据(配子ID)%>%
dplyr::mutate(newCol=paste0(gameID,'-',seq_沿(gameID)))
#一个tibble:8x3
#组:gameID[2]
#配子甘草
#         
#1 34            1 34-1  
#2 34            2 34-2  
#3 34            3 34-3  
#4 34            4 34-4  
#5 34            5 34-5  
#6 25            6 25-1  
#7 25            7 25-2  
#8 25            8 25-3 

我应该删除garbocol,这会让帖子更混乱我应该删除garbocol,这会让帖子更混乱你认为这可以在没有分组的情况下完成吗?如果不是这样的话,但是group_by有一个意想不到的结果,就是转换成一个tibble,这就是将很多字符类转换成int(即使它们应该仍然是字符类型),实际上最后的注释是一个谎言-我在代码中进一步处理列类类型,所以是okay@Canovice您可以使用
data.table
中的
rowid
。i、 e.
mydf%>%变异(newCol=paste(gameID,rowid(gameID),sep='-'))
你认为这可以在没有分组的情况下通过“ing”完成吗?如果不是这样的话,但是group_by有一个意想不到的结果,就是转换成一个tibble,这就是将很多字符类转换成int(即使它们应该仍然是字符类型),实际上最后的注释是一个谎言-我在代码中进一步处理列类类型,所以是okay@Canovice您可以使用
data.table
中的
rowid
。i、 e.
mydf%>%突变(newCol=paste(gameID,rowid(gameID),sep='-')