我在R中有一张表有这样的表str():
table [1:3, 1:4] 0.166 0.319 0.457 0.261 0.248 ...
- attr(*, "dimnames")=List of 2
..$ x: chr [1:3] "Metro >=1 million" "Metro <1 million" "Non-Metro Counties"
..$ y: chr [1:4] "q1" "q2" "q3" "q4"
Run Code Online (Sandbox Code Playgroud)
当我打印它时看起来像这样:
y
x q1 q2 q3 q4
Metro >=1 million 0.1663567 0.2612212 0.2670441 0.3053781
Metro <1 million 0.3192857 0.2480012 0.2341030 0.1986102
Non-Metro Counties 0.4570341 0.2044960 0.2121102 0.1263597
Run Code Online (Sandbox Code Playgroud)
我想摆脱x和y并将其转换成数据帧,看起来完全一样,上面的(三排,四列),但没有x或y.如果我使用as.data.frame(mytable),而是我得到这个:
x y Freq
1 Metro …Run Code Online (Sandbox Code Playgroud) 我想每次都重复data.frame的行N.结果应该是一个新的data.frame(with nrow(new.df) == nrow(old.df) * N)保持列的数据类型.
N = 2的示例:
A B C
A B C 1 j i 100
1 j i 100 --> 2 j i 100
2 K P 101 3 K P 101
4 K P 101
Run Code Online (Sandbox Code Playgroud)
因此,每行重复2次,字符仍然是字符,因素仍然是因素,数字仍然是数字,...
我的第一次尝试使用了:apply(old.df, 2, function(co) rep(co, each = N)),但是这个将我的值转换为字符,我得到:
A B C
[1,] "j" "i" "100"
[2,] "j" "i" "100"
[3,] "K" "P" "101"
[4,] "K" "P" "101"
Run Code Online (Sandbox Code Playgroud)