我有来自在线调查的数据,受访者经历了1-3次问题循环.调查软件(Qualtrics)记录在多列,也就是说这个数据,Q3.2的调查将在列Q3.2.1.
,Q3.2.2.
以及Q3.2.3.
:
df <- data.frame(
id = 1:10,
time = as.Date('2009-01-01') + 0:9,
Q3.2.1. = rnorm(10, 0, 1),
Q3.2.2. = rnorm(10, 0, 1),
Q3.2.3. = rnorm(10, 0, 1),
Q3.3.1. = rnorm(10, 0, 1),
Q3.3.2. = rnorm(10, 0, 1),
Q3.3.3. = rnorm(10, 0, 1)
)
# Sample data
id time Q3.2.1. Q3.2.2. Q3.2.3. Q3.3.1. Q3.3.2. Q3.3.3.
1 1 2009-01-01 -0.2059165 -0.29177677 -0.7107192 1.52718069 -0.4484351 -1.21550600
2 2 2009-01-02 -0.1981136 -1.19813815 1.1750200 -0.40380049 -1.8376094 1.03588482
3 3 …
Run Code Online (Sandbox Code Playgroud) 我需要转置一个大型数据框,所以我使用:
df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)
Run Code Online (Sandbox Code Playgroud)
这是我获得的:
df.aree[c(1:5),c(1:5)]
10428 10760 12148 11865
name M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
Run Code Online (Sandbox Code Playgroud)
我的问题是我需要消除的新列名称(10428,10760,12148,11865),因为我需要将第一行用作列名.
我试过col.names()
功能,但我没有得到我需要的东西.
你有什么建议吗?
编辑
谢谢你的建议!使用它我获得:
df.aree[c(1:5),c(1:5)]
M231T3 M961T5 M960T6 M231T19
GS04.A 5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
GS16.A 5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
GS20.A 5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
GS40.A 3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
GS44.A 1.225938e+04 2.681887e+03 1.154924e+04 4.202394e+04
Run Code Online (Sandbox Code Playgroud)
现在我需要在因子列中转换行名(GS ..)....
我有一个数据框,如下所示:
data.frame(director = c("Aaron Blaise,Bob Walker", "Akira Kurosawa",
"Alan J. Pakula", "Alan Parker", "Alejandro Amenabar", "Alejandro Gonzalez Inarritu",
"Alejandro Gonzalez Inarritu,Benicio Del Toro", "Alejandro González Iñárritu",
"Alex Proyas", "Alexander Hall", "Alfonso Cuaron", "Alfred Hitchcock",
"Anatole Litvak", "Andrew Adamson,Marilyn Fox", "Andrew Dominik",
"Andrew Stanton", "Andrew Stanton,Lee Unkrich", "Angelina Jolie,John Stevenson",
"Anne Fontaine", "Anthony Harvey"), AB = c('A', 'B', 'A', 'A', 'B', 'B', 'B', 'A', 'B', 'A', 'B', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'A'))
Run Code Online (Sandbox Code Playgroud)
如您所见,director
列中的某些条目是由逗号分隔的多个名称.我想将这些条目拆分为单独的行,同时保持另一列的值.例如,上面数据框中的第一行应该分成两行,director
列中各有一个名称,列中有"A" …
我有一个关于命令图()的问题.
有没有办法完全消除x轴并用自己的值替换它?我知道我可以通过这样做摆脱轴
plot(x,y, xaxt = 'n')
Run Code Online (Sandbox Code Playgroud)
然后添加一个轴
axis(side = 1 etc.)
Run Code Online (Sandbox Code Playgroud)
但是,当我添加轴时,显然它仍然指的是绘制为'x'的数据.我只想绘制'y'值并添加我自己的x轴,只需"绘制"x轴并指定自己的值.有没有办法做到这一点?
这个问题的背景是我的两个数据框的长度不同,因此我无法绘制它们.
我有以下数据帧:
uniq <- structure(list(year = c(1986L, 1987L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 1986L, 1987L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 1986L, 1987L, 1991L, 1992L, 1993L, 1994L, 1995L, 1996L, 1997L, 1998L, 1999L, 2000L, 2001L, 2002L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, …
Run Code Online (Sandbox Code Playgroud) 我试图在R中创建两个不同大小的矢量的所有元素的独特组合.
例如,第一个向量是
a <- c("ABC", "DEF", "GHI")
Run Code Online (Sandbox Code Playgroud)
第二个是当前存储为字符串的日期
b <- c("2012-05-01", "2012-05-02", "2012-05-03", "2012-05-04", "2012-05-05")
Run Code Online (Sandbox Code Playgroud)
我需要创建一个包含两列的数据框
> data
a b
1 ABC 2012-05-01
2 ABC 2012-05-02
3 ABC 2012-05-03
4 ABC 2012-05-04
5 ABC 2012-05-05
6 DEF 2012-05-01
7 DEF 2012-05-02
8 DEF 2012-05-03
9 DEF 2012-05-04
10 DEF 2012-05-05
11 GHI 2012-05-01
12 GHI 2012-05-02
13 GHI 2012-05-03
14 GHI 2012-05-04
15 GHI 2012-05-05
Run Code Online (Sandbox Code Playgroud)
所以基本上,我正在寻找一个独特的组合,考虑一个矢量的所有元素(a)与第二个矢量(b)的所有元素并置.
理想的解决方案将推广到更多输入向量.
另请参见:
如何生成组合矩阵
我有一个如下所示的数据集:
Month count
2009-01 12
2009-02 310
2009-03 2379
2009-04 234
2009-05 14
2009-08 1
2009-09 34
2009-10 2386
Run Code Online (Sandbox Code Playgroud)
我想绘制数据(月份为x值,计为y值).由于数据存在差距,我想将月份信息转换为日期.我试过了:
as.Date("2009-03", "%Y-%m")
Run Code Online (Sandbox Code Playgroud)
但它没有用.怎么了?似乎as.Date()也需要一天,并且无法设置当天的标准值?哪个功能解决了我的问题?
我在数据框中有一堆列,我想粘贴在一起(用" - "分隔),如下所示:
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中的一行中分配多个变量.是否可以这样做?
values # initialize some vector of values
(a, b) = values[c(2,4)] # assign a and b to values at 2 and 4 indices of 'values'
Run Code Online (Sandbox Code Playgroud)
通常我想在一行中分配大约5-6个变量,而不是多行.还有其他选择吗?
假设我正在使用R的交互式控制台,我刚刚做了类似这样的事情:
long_running_command()
Run Code Online (Sandbox Code Playgroud)
这个长时间运行的命令返回一个值,我刚刚意识到我想将该值赋给变量而不是丢弃它.那么如何在不再运行命令的情况下获得该值呢?有这样的命令吗?
result = get_last_return_value()
Run Code Online (Sandbox Code Playgroud)