Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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中的行拆分数据帧_R - Fatal编程技术网

基于R中的行拆分数据帧

基于R中的行拆分数据帧,r,R,我有一个PDF格式的表格。我将其转换为CSV,以下是CSV内容 A 23 45 53 34 62 87 94 75 B 120 61 113 41 109 48 90 95 123 113 112 101 我将CSV加载到R中,但数据帧不是预期的 A 23 45 53 34 62 87 94 75 B 120 61 113 41 109 48 90 95 123 113 112 101 如何在数据帧中拆分

我有一个PDF格式的表格。我将其转换为CSV,以下是CSV内容

A   23  45  53  34
    62  87  94  75

B   120 61  113 41
    109 48  90  95
    123 113 112 101
我将CSV加载到R中,但数据帧不是预期的

A   23  45  53  34  62  87  94  75

B   120 61  113 41  109 48  90  95  123 113 112 101 
如何在数据帧中拆分行。感谢您的帮助

最后,我试图实现以下目标:

A1  23  45  53  34
A2  62  87  94  75

B1  120 61  113 41
B2  109 48  90  95
B3  123 113 112 101

非常感谢

这可能有用,但您确实没有提供足够的信息来确定

dat <- readLines("thefile.csv")

prev.x <- ""
ctr <- 1

df <- ldply(strsplit(dat, "\ +"), function(x) { 

  if (nchar(x[1]) == 0) {
    x[1] <- prev.x
    ctr <- ctr + 1
  } else {
    prev.x <<- x[1]
    ctr <- 1
  }  

  x[1] <- sprintf("%s%d", x[1], ctr)

  return(as.data.frame(matrix(x, nrow=1)))

})

colnames(df) <- c("ltr", "v1", "v2", "v3", "V4")

df <- df[complete.cases(df),]
df

dat这可能有效,但您确实没有提供足够的信息来确定

dat <- readLines("thefile.csv")

prev.x <- ""
ctr <- 1

df <- ldply(strsplit(dat, "\ +"), function(x) { 

  if (nchar(x[1]) == 0) {
    x[1] <- prev.x
    ctr <- ctr + 1
  } else {
    prev.x <<- x[1]
    ctr <- 1
  }  

  x[1] <- sprintf("%s%d", x[1], ctr)

  return(as.data.frame(matrix(x, nrow=1)))

})

colnames(df) <- c("ltr", "v1", "v2", "v3", "V4")

df <- df[complete.cases(df),]
df

dat这可能有效,但您确实没有提供足够的信息来确定

dat <- readLines("thefile.csv")

prev.x <- ""
ctr <- 1

df <- ldply(strsplit(dat, "\ +"), function(x) { 

  if (nchar(x[1]) == 0) {
    x[1] <- prev.x
    ctr <- ctr + 1
  } else {
    prev.x <<- x[1]
    ctr <- 1
  }  

  x[1] <- sprintf("%s%d", x[1], ctr)

  return(as.data.frame(matrix(x, nrow=1)))

})

colnames(df) <- c("ltr", "v1", "v2", "v3", "V4")

df <- df[complete.cases(df),]
df

dat这可能有效,但您确实没有提供足够的信息来确定

dat <- readLines("thefile.csv")

prev.x <- ""
ctr <- 1

df <- ldply(strsplit(dat, "\ +"), function(x) { 

  if (nchar(x[1]) == 0) {
    x[1] <- prev.x
    ctr <- ctr + 1
  } else {
    prev.x <<- x[1]
    ctr <- 1
  }  

  x[1] <- sprintf("%s%d", x[1], ctr)

  return(as.data.frame(matrix(x, nrow=1)))

})

colnames(df) <- c("ltr", "v1", "v2", "v3", "V4")

df <- df[complete.cases(df),]
df
dat这样行吗

x <-read.csv("your-file.csv", header=F)

h=vector("character",nrow(x)) 
n=1; p=NA 
for (i in 1:nrow(x)) { 
  if (""==x$V1[i]) { n=n+1; z = p} else { n = 1; z = p = x$V1[i] }
  h[i] = paste0(z,n)  
}

x$V1 <- h
x这样行吗

x <-read.csv("your-file.csv", header=F)

h=vector("character",nrow(x)) 
n=1; p=NA 
for (i in 1:nrow(x)) { 
  if (""==x$V1[i]) { n=n+1; z = p} else { n = 1; z = p = x$V1[i] }
  h[i] = paste0(z,n)  
}

x$V1 <- h
x这样行吗

x <-read.csv("your-file.csv", header=F)

h=vector("character",nrow(x)) 
n=1; p=NA 
for (i in 1:nrow(x)) { 
  if (""==x$V1[i]) { n=n+1; z = p} else { n = 1; z = p = x$V1[i] }
  h[i] = paste0(z,n)  
}

x$V1 <- h
x这样行吗

x <-read.csv("your-file.csv", header=F)

h=vector("character",nrow(x)) 
n=1; p=NA 
for (i in 1:nrow(x)) { 
  if (""==x$V1[i]) { n=n+1; z = p} else { n = 1; z = p = x$V1[i] }
  h[i] = paste0(z,n)  
}

x$V1 <- h
x另一种可能性:

# read data
df <- read.table(text = "A   23  45  53  34  62  87  94  75
B   120 61  113 41  109 48  90  95  123 113 112 101", fill = TRUE)

df
#   V1  V2 V3  V4 V5  V6 V7 V8 V9 V10 V11 V12 V13
# 1  A  23 45  53 34  62 87 94 75  NA  NA  NA  NA
# 2  B 120 61 113 41 109 48 90 95 123 113 112 101

# from df, remove first column
# then, make a four-column matrix of the non-NA values in each row
l <- apply(df[ , -1], 1, function(x) matrix(na.omit(x), ncol = 4, byrow = TRUE))
l
# [[1]]
#      [,1] [,2] [,3] [,4]
# [1,]   23   45   53   34
# [2,]   62   87   94   75
# 
# [[2]]
#      [,1] [,2] [,3] [,4]
# [1,]  120   61  113   41
# [2,]  109   48   90   95
# [3,]  123  113  112  101

# add id column
lapply(seq_along(l), function(x){
  cbind.data.frame(id = paste0(df$V1[x], seq(from = 1, to = nrow(l[[x]]))), l[[x]])
})

# [[1]]
#   id  1  2  3  4
# 1 A1 23 45 53 34
# 2 A2 62 87 94 75
# 
# [[2]]
#   id   1   2   3   4
# 1 B1 120  61 113  41
# 2 B2 109  48  90  95
# 3 B3 123 113 112 101
#读取数据
df另一种可能性:

# read data
df <- read.table(text = "A   23  45  53  34  62  87  94  75
B   120 61  113 41  109 48  90  95  123 113 112 101", fill = TRUE)

df
#   V1  V2 V3  V4 V5  V6 V7 V8 V9 V10 V11 V12 V13
# 1  A  23 45  53 34  62 87 94 75  NA  NA  NA  NA
# 2  B 120 61 113 41 109 48 90 95 123 113 112 101

# from df, remove first column
# then, make a four-column matrix of the non-NA values in each row
l <- apply(df[ , -1], 1, function(x) matrix(na.omit(x), ncol = 4, byrow = TRUE))
l
# [[1]]
#      [,1] [,2] [,3] [,4]
# [1,]   23   45   53   34
# [2,]   62   87   94   75
# 
# [[2]]
#      [,1] [,2] [,3] [,4]
# [1,]  120   61  113   41
# [2,]  109   48   90   95
# [3,]  123  113  112  101

# add id column
lapply(seq_along(l), function(x){
  cbind.data.frame(id = paste0(df$V1[x], seq(from = 1, to = nrow(l[[x]]))), l[[x]])
})

# [[1]]
#   id  1  2  3  4
# 1 A1 23 45 53 34
# 2 A2 62 87 94 75
# 
# [[2]]
#   id   1   2   3   4
# 1 B1 120  61 113  41
# 2 B2 109  48  90  95
# 3 B3 123 113 112 101
#读取数据
df另一种可能性:

# read data
df <- read.table(text = "A   23  45  53  34  62  87  94  75
B   120 61  113 41  109 48  90  95  123 113 112 101", fill = TRUE)

df
#   V1  V2 V3  V4 V5  V6 V7 V8 V9 V10 V11 V12 V13
# 1  A  23 45  53 34  62 87 94 75  NA  NA  NA  NA
# 2  B 120 61 113 41 109 48 90 95 123 113 112 101

# from df, remove first column
# then, make a four-column matrix of the non-NA values in each row
l <- apply(df[ , -1], 1, function(x) matrix(na.omit(x), ncol = 4, byrow = TRUE))
l
# [[1]]
#      [,1] [,2] [,3] [,4]
# [1,]   23   45   53   34
# [2,]   62   87   94   75
# 
# [[2]]
#      [,1] [,2] [,3] [,4]
# [1,]  120   61  113   41
# [2,]  109   48   90   95
# [3,]  123  113  112  101

# add id column
lapply(seq_along(l), function(x){
  cbind.data.frame(id = paste0(df$V1[x], seq(from = 1, to = nrow(l[[x]]))), l[[x]])
})

# [[1]]
#   id  1  2  3  4
# 1 A1 23 45 53 34
# 2 A2 62 87 94 75
# 
# [[2]]
#   id   1   2   3   4
# 1 B1 120  61 113  41
# 2 B2 109  48  90  95
# 3 B3 123 113 112 101
#读取数据
df另一种可能性:

# read data
df <- read.table(text = "A   23  45  53  34  62  87  94  75
B   120 61  113 41  109 48  90  95  123 113 112 101", fill = TRUE)

df
#   V1  V2 V3  V4 V5  V6 V7 V8 V9 V10 V11 V12 V13
# 1  A  23 45  53 34  62 87 94 75  NA  NA  NA  NA
# 2  B 120 61 113 41 109 48 90 95 123 113 112 101

# from df, remove first column
# then, make a four-column matrix of the non-NA values in each row
l <- apply(df[ , -1], 1, function(x) matrix(na.omit(x), ncol = 4, byrow = TRUE))
l
# [[1]]
#      [,1] [,2] [,3] [,4]
# [1,]   23   45   53   34
# [2,]   62   87   94   75
# 
# [[2]]
#      [,1] [,2] [,3] [,4]
# [1,]  120   61  113   41
# [2,]  109   48   90   95
# [3,]  123  113  112  101

# add id column
lapply(seq_along(l), function(x){
  cbind.data.frame(id = paste0(df$V1[x], seq(from = 1, to = nrow(l[[x]]))), l[[x]])
})

# [[1]]
#   id  1  2  3  4
# 1 A1 23 45 53 34
# 2 A2 62 87 94 75
# 
# [[2]]
#   id   1   2   3   4
# 1 B1 120  61 113  41
# 2 B2 109  48  90  95
# 3 B3 123 113 112 101
#读取数据

df请粘贴问题中CSV文件的内容。CSV内容与PDF内容相同。如果粘贴的数据的起始块是实际的CSV文件,那么您确实应该考虑从R中进行数据准备,并使用像崇高文本这样的编辑器将其放入底部所需的格式。如果您的问题是如何获取类似于原始块的大型粘贴并以编程方式将其转换为类似于底部块的内容,那么这是一个完全不同的问题。另外,您使用了什么功能将CSV加载到R中?我使用了read.CSV(“filepath”,header=F)。请粘贴问题中的CSV文件内容。CSV内容与PDF内容相同。如果粘贴的数据的起始块是实际的CSV文件,那么您确实应该考虑从R中进行数据准备,并使用像崇高文本这样的编辑器将其放入底部所需的格式。如果您的问题是如何获取类似于原始块的大型粘贴并以编程方式将其转换为类似于底部块的内容,那么这是一个完全不同的问题。另外,您使用了什么功能将CSV加载到R中?我使用了read.CSV(“filepath”,header=F)。请粘贴问题中的CSV文件内容。CSV内容与PDF内容相同。如果粘贴的数据的起始块是实际的CSV文件,那么您确实应该考虑从R中进行数据准备,并使用像崇高文本这样的编辑器将其放入底部所需的格式。如果您的问题是如何获取类似于原始块的大型粘贴并以编程方式将其转换为类似于底部块的内容,那么这是一个完全不同的问题。另外,您使用了什么功能将CSV加载到R中?我使用了read.CSV(“filepath”,header=F)。请粘贴问题中的CSV文件内容。CSV内容与PDF内容相同。如果粘贴的数据的起始块是实际的CSV文件,那么您确实应该考虑从R中进行数据准备,并使用像崇高文本这样的编辑器将其放入底部所需的格式。如果您的问题是如何获取类似于原始块的大型粘贴并以编程方式将其转换为类似于底部块的内容,那么这是一个完全不同的问题。另外,您使用什么函数将CSV加载到R中?我使用read.CSV(“filepath”,header=F)。