我在数据框中有一堆列,我想粘贴在一起(用" - "分隔),如下所示:
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中有一些列,每行只有一个值,其余的将是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]
.
任何帮助,将不胜感激.
谢谢
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中累积出现在列中的次数?
比如说我有专栏:
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中有一个数据帧,它想要写入excel(或csv)并以漂亮的格式输出(例如,带有边框,表格的标题,不是从单元格A1开始).
目前我使用函数write.table将我的数据帧写入csv文件,然后将数据复制并粘贴到excel中的文档中,我将表格准备好格式化为模板.
当它只有一个数据帧时,这不是一个主要问题,但我现在想要为多个数据帧执行此操作,并在excel中的多个选项卡中使用这些数据帧.
有没有一种方法可以将我的数据帧自动复制到现有Excel电子表格中的特定单元格,并正确设置所有格式?
我想更新数据帧的一列,使用其原始名称引用它,这可能吗?比如说我有表'数据'
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中有一个非常大的数据框,并希望在其他列中为每个不同的值加上两列,例如,我们在一天内有各种商店的交易数据框的数据,如下所示
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中是否有工具可以找到某个位置海拔高度?
降价时,是否有一种方法可以使一个句子中的一个单词大于其他所有单词?
知道你可以使用#更改标题的大小,但不确定是否有办法改变整个主体的大小,更不用说主体内只有一个单词?
谢谢
我有一个向量,我想用多个元素替换一个元素,我可以用一个而不是多个替换,任何人都可以帮忙吗?
比如我有
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)