我有一个名称和类别的列表,如下所示:
Name
Country
Role
Type
Position
A
USA
P
I
SZ
B
India
R
E
DS
C
USA
H
I
FG
D
France
P
S
RTG
E
USA
R
I
ZA
F
India
H
E
SFG
G
USA
Z
I
DFZ
H
France
Z
S
FSZ
我想用R表示如下
Column1 Column2 Column3 Column4 Column5
A USA P I SZ
B India R E DS
C USA H I FG
D France P S RTG
E USA R I ZA
F India H E SFG
G USA Z I DFZ
H France Z S FSZ
我知道如何在Excel中使用以下公式进行操作:
= INDEX($ A:$ A,ROW(A1)* 5-5 + COLUMN(A1))
我不知道如何在R中做到这一点。
谢谢
答案 0 :(得分:1)
这里是尝试使用tidyverse并假设您的字符串看起来像这样:
"Name\nCountry\nRole\nType\nPosition\nA\nUSA\nP\nI\nSZ\nB\nIndia\nR\nE\nDS\nC\nUSA\nH\nI\nFG\nD\nFrance\nP\nS\nRTG\nE\nUSA\nR\nI\nZA\nF\nIndia\nH\nE\nSFG\nG\nUSA\nZ\nI\nDFZ\nH\nFrance\nZ\nS\nFSZ"
在R控制台中。
library(tidyverse)
mystring <- "Name\nCountry\nRole\nType\nPosition\nA\nUSA\nP\nI\nSZ\nB\nIndia\nR\nE\nDS\nC\nUSA\nH\nI\nFG\nD\nFrance\nP\nS\nRTG\nE\nUSA\nR\nI\nZA\nF\nIndia\nH\nE\nSFG\nG\nUSA\nZ\nI\nDFZ\nH\nFrance\nZ\nS\nFSZ"
dd <- mystring %>%
str_split("\\n") %>%
first() %>%
matrix(ncol = 5, byrow = TRUE)
仍然需要提取第一行并使用colnames(dd) <-
将其分配给您的列名,请参见?colnames
。
答案 1 :(得分:0)
基本R:
# data
s <- "Name\nCountry\nRole\nType\nPosition\nA\nUSA space\nP space\nI\nSZ\nB\nIndia\nR\nE\nDS\nC\nUSA\nH\nI\nFG\nD\nFrance\nP\nS\nRTG\nE\nUSA\nR\nI\nZA\nF\nIndia\nH\nE\nSFG\nG\nUSA\nZ\nI\nDFZ\nH\nFrance\nZ\nS\nFSZ"
n_col <- 5
df <- read.table(text = s, sep="\n")
n_row <- nrow(df)/n_col
df <- as.data.frame(matrix(df$V1, n_row, n_col, byrow=TRUE))[-1,]
输出
V1 V2 V3 V4 V5
1 A USA P I SZ
2 B India R E DS
3 C USA H I FG
4 D France P S RTG
5 E USA R I ZA
6 F India H E SFG
7 G USA Z I DFZ
8 H France Z S FSZ