Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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中的data.frame中,在另一列的下方添加一列_R - Fatal编程技术网

在R中的data.frame中,在另一列的下方添加一列

在R中的data.frame中,在另一列的下方添加一列,r,R,不确定我是否在主题中使用了正确的英语单词来描述我需要的东西 看这个例子 df <- data.frame(a=sample(1:10), b=sample(1:10)) df a b 1 2 9 2 5 8 3 10 1 4 3 7 5 8 4 6 6 10 7 9 5 8 7 6 9 1 3 10 4 2 我找到了带有rbind的示例,但找不到在我的情况下如何使用它。我们可以使用取消列表创建一个向量,然后用data.fra

不确定我是否在主题中使用了正确的英语单词来描述我需要的东西

看这个例子

df <- data.frame(a=sample(1:10), b=sample(1:10))
df
    a  b
1   2  9
2   5  8
3  10  1
4   3  7
5   8  4
6   6 10
7   9  5
8   7  6
9   1  3
10  4  2

我找到了带有
rbind
的示例,但找不到在我的情况下如何使用它。

我们可以使用
取消列表
创建一个
向量
,然后用
data.frame
包装它以创建一个新的数据集

d1 <- data.frame(a=unlist(df, use.names = FALSE))
d1
#    a
#1   2
#2   5
#3  10
#4   3
#5   8
#6   6
#7   9
#8   7
#9   1
#10  4
#11  9
#12  8
#13  1
#14  7
#15  4
#16 10
#17  5
#18  6
#19  3
#20  2
d1您还可以:

df2 <- data.frame(a = c(df[,"a"], df[,"b"]))

df2您可以通过以下方式选择
a
bind
将其绑定到
b

df <- data.frame(a=sample(1:10), b=sample(1:10))
df %>% 
  select(a) %>% 
  bind_rows(
    df %>% 
      transmute(a = b)
  )
df%
选择(a)%>%
绑定行(
df%>%
蜕变(a=b)
)
您可以从
tidyr
软件包中使用

library(dplyr)
set.seed(1)
df <- data.frame(a=sample(1:10), b=sample(1:10))
pivot_longer(df, a:b)


# A tibble: 20 x 2
   name  value
   <chr> <int>
 1 a         3
 2 b         3
 3 a         4
 4 b         2
 5 a         5
 6 b         6
 7 a         7
 8 b        10
 9 a         2
10 b         5
11 a         8
12 b         7
13 a         9
14 b         8
15 a         6
16 b         4
17 a        10
18 b         1
19 a         1
20 b         9
库(dplyr)
种子(1)

df您还可以使用
tidyr
dplyr
以新的data.frame结束

library(tidyr)
library(dplyr)
set.seed(1)
df <- data.frame(a=sample(1:10), b=sample(11:20), c=sample(21:30))
head(df)

df2 <- pivot_longer(df, a:c, names_to = "letter", values_to = "d")
df3 <- data.frame(arrange(df2, letter))
head(df3); str(df3)
library(tidyr)
图书馆(dplyr)
种子(1)

df
rbind
失败,因为它假定您传入的参数是行,因此结果为2x10。您可以使用
c()
作为端到端或20x1结果,我不保留名称/文本。这个能把我的文字转换成数字吗?嗨!你能再具体一点吗?你指的是哪几列的名字?如果是的话,那么整个要点就是要有一个新的专栏,把它们全部结合起来。如果两列中有一列不是数字,它确实会转换数字。R试图找到公共分母,并将所有内容转换为它(最有可能是您的大小写字符)。在我的例子中,两列都是电子邮件地址,因此它们都有数字和特殊字符。有没有办法指定我只需要字符?是的,通过使用正则表达式,但这是一个完全不同的问题。或许可以在这里看一看,或者只是发布一个新问题:)
library(tidyr)
library(dplyr)
set.seed(1)
df <- data.frame(a=sample(1:10), b=sample(11:20), c=sample(21:30))
head(df)

df2 <- pivot_longer(df, a:c, names_to = "letter", values_to = "d")
df3 <- data.frame(arrange(df2, letter))
head(df3); str(df3)
df4 <- pivot_longer(df, c(a,c), names_to = "letter", values_to = "d")
df5 <- data.frame(arrange(df4, letter))
head(df5); str(df5)
df5