小编use*_*199的帖子

将多个列粘贴在一起

我在数据框中有一堆列,我想粘贴在一起(用" - "分隔),如下所示:

data <- data.frame('a' = 1:3, 
                   'b' = c('a','b','c'), 
                   'c' = c('d', 'e', 'f'), 
                   'd' = c('g', 'h', 'i'))
i.e.     
     a   b   c  d  
     1   a   d   g  
     2   b   e   h  
     3   c   f   i  
Run Code Online (Sandbox Code Playgroud)

我想成为:

a x  
1 a-d-g  
2 b-e-h  
3 c-f-i  
Run Code Online (Sandbox Code Playgroud)

我通常可以这样做:

within(data, x <- paste(b,c,d,sep='-'))
Run Code Online (Sandbox Code Playgroud)

然后删除旧列,但不幸的是我不知道具体列的名称,只是所有列的集体名称,例如我会知道 cols <- c('b','c','d')

有谁知道这样做的方法?

r paste r-faq

83
推荐指数
9
解决办法
9万
查看次数

合并列以删除NA

我在R中有一些列,每行只有一个值,其余的将是NA的.我想将这些组合成一个具有非NA值的列.有谁知道这样做的简单方法.例如,我可以如下:

data <- data.frame('a' = c('A','B','C','D','E'),
                   'x' = c(1,2,NA,NA,NA),
                   'y' = c(NA,NA,3,NA,NA),
                   'z' = c(NA,NA,NA,4,5))
Run Code Online (Sandbox Code Playgroud)

所以我会的

'a' 'x' 'y' 'z'  
 A   1   NA  NA  
 B   2   NA  NA  
 C  NA   3   NA  
 D  NA   NA  4  
 E  NA   NA  5
Run Code Online (Sandbox Code Playgroud)

而且我会得到

 'a' 'mycol'  
  A   1  
  B   2  
  C   3  
  D   4  
  E   5  
Run Code Online (Sandbox Code Playgroud)

包含NA的列的名称根据查询中较早的代码而更改,因此我将无法显式调用列名,但是我将包含NA的列的列名称存储为向量,例如,在此示例中cols <- c('x','y','z'),所以可以调用列data[, cols].

任何帮助,将不胜感激.

谢谢

merge r na

35
推荐指数
5
解决办法
3万
查看次数

在dplyr的重命名函数中输入新的列名作为字符串

dplyr的重命名函数要求将新列名作为不带引号的变量名传递.但是我有一个函数,通过将字符串粘贴到传入的参数上来构造列名,因此是一个字符串.

比如说我有这个功能

myFunc <- function(df, col){
  new <- paste0(col, '_1')
  out <- dplyr::rename(df, new = old)
  return(out)
}
Run Code Online (Sandbox Code Playgroud)

如果我运行这个

df <- data.frame(a = 1:3, old = 4:6)
myFunc(df, 'x')
Run Code Online (Sandbox Code Playgroud)

我明白了

  a new
1 1   4
2 2   5
3 3   6
Run Code Online (Sandbox Code Playgroud)

而我希望'new'列是我构造的字符串的名称('x_1'),即

  a x_1
1 1   4
2 2   5
3 3   6
Run Code Online (Sandbox Code Playgroud)

无论如何这样做?

r dplyr

26
推荐指数
1
解决办法
1万
查看次数

R中的累计数

有没有办法计算对象在R中累积出现在列中的次数?

比如说我有专栏:

id  
1  
2  
3  
2  
2  
1  
2  
3
Run Code Online (Sandbox Code Playgroud)

这会变成:

id   count  
1     1  
2     1  
3     1  
2     2  
2     3  
1     2  
2     4  
3     2  
Run Code Online (Sandbox Code Playgroud)

等等...

谢谢

r count cumulative-sum

25
推荐指数
4
解决办法
1万
查看次数

从R写入excel中的模板,同时保留格式

我在R中有一个数据帧,它想要写入excel(或csv)并以漂亮的格式输出(例如,带有边框,表格的标题,不是从单元格A1开始).

目前我使用函数write.table将我的数据帧写入csv文件,然后将数据复制并粘贴到excel中的文档中,我将表格准备好格式化为模板.

当它只有一个数据帧时,这不是一个主要问题,但我现在想要为多个数据帧执行此操作,并在excel中的多个选项卡中使用这些数据帧.

有没有一种方法可以将我的数据帧自动复制到现有Excel电子表格中的特定单元格,并正确设置所有格式?

excel r

22
推荐指数
1
解决办法
1万
查看次数

重命名R中的一个命名列

我想更新数据帧的一列,使用其原始名称引用它,这可能吗?比如说我有表'数据'

a b c  
1 2 2  
3 2 3  
4 1 2
Run Code Online (Sandbox Code Playgroud)

我想将列b的名称更新为'd'.我知道我可以用

colnames(data)[2] <- 'd'  
Run Code Online (Sandbox Code Playgroud)

但是我可以通过专门引用b来进行更改,例如

colnames(data)['b'] <- 'd'  
Run Code Online (Sandbox Code Playgroud)

这样,如果数据帧的列顺序发生更改,则仍会更新正确的列名.

提前致谢

r dataframe

17
推荐指数
3
解决办法
3万
查看次数

由R中的不同列值求和

我在R中有一个非常大的数据框,并希望在其他列中为每个不同的值加上两列,例如,我们在一天内有各种商店的交易数据框的数据,如下所示

shop <- data.frame('shop_id' = c(1, 1, 1, 2, 3, 3), 
  'shop_name' = c('Shop A', 'Shop A', 'Shop A', 'Shop B', 'Shop C', 'Shop C'), 
  'city' = c('London', 'London', 'London', 'Cardiff', 'Dublin', 'Dublin'), 
  'sale' = c(12, 5, 9, 15, 10, 18), 
  'profit' = c(3, 1, 3, 6, 5, 9))
Run Code Online (Sandbox Code Playgroud)

这是:

shop_id  shop_name    city      sale profit
   1     Shop A       London    12   3
   1     Shop A       London    5    1
   1     Shop A       London    9    3
   2     Shop B       Cardiff   15   6
   3 …
Run Code Online (Sandbox Code Playgroud)

r sum unique data.table

10
推荐指数
2
解决办法
2万
查看次数

在R中将纬度/经度转换为海拔高度

根据纬度和经度,是否有人知道R中是否有工具可以找到某个位置海拔高度?

r latitude-longitude altitude

9
推荐指数
3
解决办法
6434
查看次数

在降价中使句子中的一个词更大

降价时,是否有一种方法可以使一个句子中的一个单词大于其他所有单词?

知道你可以使用#更改标题的大小,但不确定是否有办法改变整个主体的大小,更不用说主体内只有一个单词?

谢谢

markdown

9
推荐指数
1
解决办法
6595
查看次数

用多个元素替换向量中的一个元素

我有一个向量,我想用多个元素替换一个元素,我可以用一个而不是多个替换,任何人都可以帮忙吗?

比如我有

data <- c('a', 'x', 'd')
> data
[1] "a" "x" "d"
Run Code Online (Sandbox Code Playgroud)

我想,以取代"x""b", "c"获得

[1] "a" "b" "c" "d"
Run Code Online (Sandbox Code Playgroud)

然而

gsub('x', c('b', 'c'), data)
Run Code Online (Sandbox Code Playgroud)

给我

[1] "a" "b" "d"
Warning message:
In gsub("x", c("b", "c"), data) :
  argument 'replacement' has length > 1 and only the first element will 
be used
Run Code Online (Sandbox Code Playgroud)

replace r gsub

9
推荐指数
1
解决办法
686
查看次数